diff --git a/aspclassiccompiler/bin/Release/Dlrsoft.Asp.dll b/aspclassiccompiler/bin/Release/Dlrsoft.Asp.dll
index 0f15818..7acd9ec 100644
Binary files a/aspclassiccompiler/bin/Release/Dlrsoft.Asp.dll and b/aspclassiccompiler/bin/Release/Dlrsoft.Asp.dll differ
diff --git a/aspclassiccompiler/bin/Release/Dlrsoft.Asp.pdb b/aspclassiccompiler/bin/Release/Dlrsoft.Asp.pdb
index bcbdc26..d52c3b8 100644
Binary files a/aspclassiccompiler/bin/Release/Dlrsoft.Asp.pdb and b/aspclassiccompiler/bin/Release/Dlrsoft.Asp.pdb differ
diff --git a/aspclassiccompiler/bin/Release/Dlrsoft.VBParser.dll b/aspclassiccompiler/bin/Release/Dlrsoft.VBParser.dll
index 3a46abb..880cf7f 100644
Binary files a/aspclassiccompiler/bin/Release/Dlrsoft.VBParser.dll and b/aspclassiccompiler/bin/Release/Dlrsoft.VBParser.dll differ
diff --git a/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.dll b/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.dll
index 17d90b2..734cc1d 100644
Binary files a/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.dll and b/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.dll differ
diff --git a/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.pdb b/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.pdb
index af7e546..976b530 100644
Binary files a/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.pdb and b/aspclassiccompiler/bin/Release/Dlrsoft.VBScript.pdb differ
diff --git a/aspclassiccompiler/bin/Release/Interop.ASPTypeLibrary.dll b/aspclassiccompiler/bin/Release/Interop.ASPTypeLibrary.dll
index 5a28f94..edf3f6c 100644
Binary files a/aspclassiccompiler/bin/Release/Interop.ASPTypeLibrary.dll and b/aspclassiccompiler/bin/Release/Interop.ASPTypeLibrary.dll differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Dynamic.dll b/aspclassiccompiler/bin/Release/Microsoft.Dynamic.dll
index 0ec7fb1..e0d83f3 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Dynamic.dll and b/aspclassiccompiler/bin/Release/Microsoft.Dynamic.dll differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Dynamic.pdb b/aspclassiccompiler/bin/Release/Microsoft.Dynamic.pdb
index 2cc4e4c..a1c0870 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Dynamic.pdb and b/aspclassiccompiler/bin/Release/Microsoft.Dynamic.pdb differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Dynamic.xml b/aspclassiccompiler/bin/Release/Microsoft.Dynamic.xml
index ee6f43a..afc94cc 100644
--- a/aspclassiccompiler/bin/Release/Microsoft.Dynamic.xml
+++ b/aspclassiccompiler/bin/Release/Microsoft.Dynamic.xml
@@ -4,131 +4,191 @@
Microsoft.Dynamic
-
+
- Singleton instance returned from an operator method when the operator method cannot provide a value.
+ Presents a flat enumerable view of multiple dictionaries
-
+
- Abstract base class used for optimized thread-safe SymbolDictionaries.
+ Not all .NET enumerators throw exceptions if accessed in an invalid state. This type
+ can be used to throw exceptions from enumerators implemented in IronPython.
+
+
+
+
+ These are some generally useful helper methods. Currently the only methods are those to
+ cached boxed representations of commonly used primitive types so that they can be shared.
+ This is useful to most dynamic languages that use object as a universal type.
- Implementers derive from this class and override the GetExtraKeys, TrySetExtraValue,
- and TryGetExtraValue methods. When looking up a value first the extra keys will be
- searched using the optimized Try*ExtraValue functions. If the value isn't found there
- then the value is stored in the underlying .NET dictionary.
+ The methods in RuntimeHelepers are caleld by the generated code. From here the methods may
+ dispatch to other parts of the runtime to get bulk of the work done, but the entry points
+ should be here.
+
+
+
+
+ A singleton boxed boolean true.
+
+
+
+
+ A singleton boxed boolean false.
+
+
+
+
+ Gets a singleton boxed value for the given integer if possible, otherwise boxes the integer.
+
+ The value to box.
+ The boxed value.
+
+
+
+ Helper method to create an instance. Work around for Silverlight where Activator.CreateInstance
+ is SecuritySafeCritical.
- Implementors can optionally override the object key functionality to store object keys
- using their own mechanism. By default object keys are stored in their own dictionary
- which is stored in the primary SymbolId dictionary under an invalid symbol id.
+ TODO: Why can't we just emit the right thing for default(T)?
+ It's always null for reference types and it's well defined for value types
-
+
- Base class for SymbolId dictionaries.
+ EventInfo.EventHandlerType getter is marked SecuritySafeCritical in CoreCLR
+ This method is to get to the property without using Reflection
+
+
+
+
+
+
+ Used by prologue code that is injected in lambdas to ensure that delegate signature matches what
+ lambda body expects. Such code typically unwraps subset of the params array manually,
+ but then passes the rest in bulk if lambda body also expects params array.
- SymbolId dictionaries are fast dictionaries used for looking up members of classes,
- function environments, function locals, and other places which are typically indexed by
- string names.
+ This calls ArrayUtils.ShiftLeft, but performs additional checks that
+ ArrayUtils.ShiftLeft assumes.
+
+
+
+
+ Factory methods.
+
+
+
+
+ Null coalescing expression
+ {result} ::= ((tmp = {_left}) == null) ? {right} : tmp
+ '??' operator in C#.
+
+
+
+
+ True coalescing expression.
+ {result} ::= IsTrue(tmp = {left}) ? {right} : tmp
+ Generalized AND semantics.
+
+
+
+
+ False coalescing expression.
+ {result} ::= IsTrue(tmp = {left}) ? tmp : {right}
+ Generalized OR semantics.
+
+
+
+
+ True coalescing expression.
+ {result} ::= IsTrue(tmp = {left}) ? {right} : tmp
+ Generalized AND semantics.
+
+
+
+
+ False coalescing expression.
+ {result} ::= IsTrue(tmp = {left}) ? tmp : {right}
+ Generalized OR semantics.
+
+
+
+
+ Creates a generator with type IEnumerable{T}, where T is the label.Type
+
+
+
- SymbolId dictionaries support both keying by SymbolId (the common case) and object keys
- (supporting late bound access to the dictionary as a normal Dictionary<object, object>
- when exposed directly to user code). When indexed by objects null is a valid value for the
- key.
+
+
+
+ Converts an expression to a void type.
+
+ An to convert to void.
+ An that has the property equal to and the and property set to void.
+
+
+
+ Returns an expression that boxes a given value. Uses boxed objects cache for Int32 and Boolean types.
-
+
- Provides hashing and equality based upon the value of the object instead of the reference.
+ Wraps the given value in a WeakReference and returns a tree that will retrieve
+ the value from the WeakReference.
-
+
- Gets the hash code for the value of the instance.
+ Determines whether specified expression type represents an assignment.
- A hash code
- The type is mutable and cannot be hashed by value
+
+ True if the expression type represents an assignment.
+
+
+ Note that some other nodes can also assign to variables, members or array items:
+ MemberInit, NewArrayInit, Call with ref params, New with ref params, Dynamic with ref params.
+
-
+
- Determines if two values are equal
-
- The object to compare the current object against.
- Returns true if the objects are equal, false if they are not.
-
-
-
- Creates a new SymbolIdDictBase from the specified creating context which will be
- used for comparisons.
+ Determines if the left child of the given expression is read or written to or both.
-
+
- Gets a list of the extra keys that are cached by the the optimized implementation
- of the module.
+ The helper to create the AST method call node. Will add conversions (Utils.Convert)
+ to parameters and instance if necessary.
-
+
- Try to set the extra value and return true if the specified key was found in the
- list of extra values.
+ The helper to create the AST method call node. Will add conversions (Utils.Convert)
+ to parameters and instance if necessary.
-
+
- Try to get the extra value and returns true if the specified key was found in the
- list of extra values. Returns true even if the value is Uninitialized.
+ The complex call helper to create the AST method call node.
+ Will add conversions (Expression.Convert()), deals with default parameter values and params arrays.
-
+
- Field dictionaries are usually indexed using literal strings, which is handled using the Symbols.
- However, Python does allow non-string keys too. We handle this case by lazily creating an object-keyed dictionary,
- and keeping it in the symbol-indexed dictionary. Such access is slower, which is acceptable.
+ Creates new instance of the LambdaBuilder with the specified name and return type.
+ Return type of the lambda being built.
+ Name for the lambda being built.
+ new LambdaBuilder instance
-
+
- Appends the object keys to the provided list.
-
-
-
-
- Appends the values stored under object keys to the provided list.
-
-
-
-
- Gets the count of object keys.
-
-
-
-
- Gets an IDictionaryEnumerator for all of the object key/value pairs.
-
-
-
-
- Stores the specified value under the specified object key.
-
-
-
-
- Removes the specified object key from the dictionary.
-
-
-
-
- Attemps to get the value stored under the specified object key.
+ MethodGroup's represent a unique collection of method's. Typically this
+ unique set is all the methods which are overloaded by the same name including
+ methods with different arity. These methods represent a single logically
+ overloaded element of a .NET type.
- Returns true if the key was found, false if not found.
-
-
-
-
- Represents a logical Property as a member of a Type. This Property can either be a real
- concrete Property on a type (implemented with a ReflectedPropertyTracker) or an extension
- property (implemented with an ExtensionPropertyTracker).
+ The base DLR binders will produce MethodGroup's when provided with a MemberGroup
+ which contains only methods. The MethodGroup's will be unique instances per
+ each unique group of methods.
@@ -226,370 +286,25 @@
extension type when ensuring that we only have 1 MemberTracker ever created.
-
+
- Efficiently tracks (line,column) information as text is added, and
- collects line mappings between the original and generated source code
- so we can generate correct debugging information later
+ Returns a BuiltinFunction bound to the provided type arguments. Returns null if the binding
+ cannot be performed.
-
+
- Marks the current position of the writer as corresponding to the
- original location passed in
-
- the line pragma corresponding to the
- current position in the generated code
-
-
-
- Used as the key for the LanguageContext.GetDelegate method caching system
+ Literal script command given using -c option
-
+
- ArgBuilder provides an argument value used by the MethodBinder. One ArgBuilder exists for each
- physical parameter defined on a method.
-
- Contrast this with ParameterWrapper which represents the logical argument passed to the method.
+ Filename to execute passed on the command line options.
-
+
- Provides the Expression which provides the value to be passed to the argument.
-
-
-
-
- Provides the Expression which provides the value to be passed to the argument.
- This method is called when result is intended to be used ByRef.
-
-
-
-
- Provides an Expression which will update the provided value after a call to the method.
- May return null if no update is required.
-
-
-
-
- Factory methods.
-
-
-
-
- Creates a generator with type IEnumerable{T}, where T is the label.Type
-
-
-
-
-
-
-
- Creates new instance of the LambdaBuilder with the specified name and return type.
-
- Return type of the lambda being built.
- Name for the lambda being built.
- new LambdaBuilder instance
-
-
-
- Wraps the given value in a WeakReference and returns a tree that will retrieve
- the value from the WeakReference.
-
-
-
-
- Converts an expression to a void type.
-
- An to convert to void.
- An that has the property equal to and the and property set to void.
-
-
-
- The helper to create the AST method call node. Will add conversions (Utils.Convert)
- to parameters and instance if necessary.
-
-
-
-
- The helper to create the AST method call node. Will add conversions (Utils.Convert)
- to parameters and instance if necessary.
-
-
-
-
- The complex call helper to create the AST method call node.
- Will add conversions (Expression.Convert()), deals with default parameter values and params arrays.
-
-
-
-
- Null coalescing expression
- {result} ::= ((tmp = {_left}) == null) ? {right} : tmp
- '??' operator in C#.
-
-
-
-
- True coalescing expression.
- {result} ::= IsTrue(tmp = {left}) ? {right} : tmp
- Generalized AND semantics.
-
-
-
-
- False coalescing expression.
- {result} ::= IsTrue(tmp = {left}) ? tmp : {right}
- Generalized OR semantics.
-
-
-
-
- True coalescing expression.
- {result} ::= IsTrue(tmp = {left}) ? {right} : tmp
- Generalized AND semantics.
-
-
-
-
- False coalescing expression.
- {result} ::= IsTrue(tmp = {left}) ? tmp : {right}
- Generalized OR semantics.
-
-
-
-
- Returns true if the method should not be displayed in the stack frame.
-
-
-
-
- ArgBuilder which provides a value for a keyword argument.
-
- The KeywordArgBuilder calculates its position at emit time using it's initial
- offset within the keyword arguments, the number of keyword arguments, and the
- total number of arguments provided by the user. It then delegates to an
- underlying ArgBuilder which only receives the single correct argument.
-
- Delaying the calculation of the position to emit time allows the method binding to be
- done without knowing the exact the number of arguments provided by the user. Hence,
- the method binder can be dependent only on the set of method overloads and keyword names,
- but not the user arguments. While the number of user arguments could be determined
- upfront, the current MethodBinder does not have this design.
-
-
-
-
- ArgBuilder provides an argument value used by the MethodBinder. One ArgBuilder exists for each
- physical parameter defined on a method.
-
- Contrast this with ParameterWrapper which represents the logical argument passed to the method.
-
-
-
-
- Provides the Expression which provides the value to be passed to the argument.
- If null is returned the argument is skipped (not passed to the callee).
-
-
-
-
- Function for accessing an argument from a given index. When returned from
- ToDelegate closed over the value will enable delegate invocations for argument
- gets to be optimized away.
-
- This function is referenced via reflection and if renamed needs CALLERS UPDATED.
-
-
-
-
- Provides an Expression which will update the provided value after a call to the method. May
- return null if no update is required.
-
-
-
-
- If the argument produces a return value (e.g. a ref or out value) this provides
- the additional value to be returned.
-
-
-
-
- The number of actual arguments consumed by this builder.
-
-
-
-
- Returns the type required for the argument or null if the ArgBuilder
- does not consume a type.
-
-
-
-
- An assignable value that is passed to a byref parameter
- After the call it will contain the updated value
-
-
-
-
- The underlying builder should expect a single parameter as KeywordArgBuilder is responsible
- for calculating the correct parameter to use
-
-
-
-
-
- The number of actual arguments consumed by this builder.
-
-
-
-
- Creates an open delegate for the given (dynamic)method.
-
-
-
-
- Creates a closed delegate for the given (dynamic)method.
-
-
-
-
- Like Type.GetInterfaces, but only returns the interfaces implemented by this type
- and not its parents.
-
-
-
-
- Gets a Func of CallSite, object * paramCnt, object delegate type
- that's suitable for use in a non-strongly typed call site.
-
-
-
-
- Simple thread-safe SymbolDictionary used for storing collections of members.
-
- Like all SymbolDictionaries this supports both indexing using SymbolId's (IAttributesCollection)
- and via object keys (IDictionary<object, object>).
-
-
-
-
- Symbol dictionaries are usually indexed using literal strings, which is handled using the Symbols.
- However, some languages allow non-string keys too. We handle this case by lazily creating an object-keyed dictionary,
- and keeping it in the symbol-indexed dictionary. Such access is slower, which is acceptable.
-
-
-
-
- Provides a list of all the members of an instance.
-
-
-
-
- Enables implicit Type to TypeTracker conversions accross dynamic languages.
-
-
-
-
- Richly represents the signature of a callsite.
-
-
-
-
- Array of additional meta information about the arguments, such as named arguments.
- Null for a simple signature that's just an expression list. eg: foo(a*b,c,d)
-
-
-
-
- Number of arguments in the signature.
-
-
-
-
- True if the OldCallAction includes an ArgumentInfo of ArgumentKind.Dictionary or ArgumentKind.Named.
-
-
-
-
- Gets the number of positional arguments the user provided at the call site.
-
-
-
-
- All arguments are unnamed and matched by position.
-
-
-
-
- Similar to Dictionary[TKey,TValue], but it also ensures that the keys will not be kept alive
- if the only reference is from this collection. The value will be kept alive as long as the key
- is alive.
-
- This currently has a limitation that the caller is responsible for ensuring that an object used as
- a key is not also used as a value in *any* instance of a WeakHash. Otherwise, it will result in the
- object being kept alive forever. This effectively means that the owner of the WeakHash should be the
- only one who has access to the object used as a value.
-
- Currently, there is also no guarantee of how long the values will be kept alive even after the keys
- get collected. This could be fixed by triggerring CheckCleanup() to be called on every garbage-collection
- by having a dummy watch-dog object with a finalizer which calls CheckCleanup().
-
-
-
-
- Check if any of the keys have gotten collected
-
- Currently, there is also no guarantee of how long the values will be kept alive even after the keys
- get collected. This could be fixed by triggerring CheckCleanup() to be called on every garbage-collection
- by having a dummy watch-dog object with a finalizer which calls CheckCleanup().
-
-
-
-
- Dictionary[TKey, TValue] is not thread-safe in the face of concurrent reads and writes. SynchronizedDictionary
- provides a thread-safe implementation. It holds onto a Dictionary[TKey, TValue] instead of inheriting from
- it so that users who need to do manual synchronization can access the underlying Dictionary[TKey, TValue].
-
-
-
-
- This returns the raw unsynchronized Dictionary[TKey, TValue]. Users are responsible for locking
- on it before accessing it. Also, it should not be arbitrarily handed out to other code since deadlocks
- can be caused if other code incorrectly locks on it.
-
-
-
-
- Provides a dictionary-like object used for caches which holds onto a maximum
- number of elements specified at construction time.
-
- This class is not thread safe.
-
-
-
-
- Creates a dictionary-like object used for caches.
-
- The maximum number of elements to store.
-
-
-
- Tries to get the value associated with 'key', returning true if it's found and
- false if it's not present.
-
-
-
-
- Adds a new element to the cache, replacing and moving it to the front if the
- element is already present.
-
-
-
-
- Returns the value associated with the given key, or throws KeyNotFoundException
- if the key is not present.
+ Only print the version of the script interpreter and exit
@@ -607,39 +322,6 @@
a new Categories entry and rename all your temporary entries.
-
-
- OperatorInfo provides a mapping from DLR ExpressionType to their associated .NET methods.
-
-
-
-
- Given an operator returns the OperatorInfo associated with the operator or null
-
-
-
-
- The operator the OperatorInfo provides info for.
-
-
-
-
- The primary method name associated with the method. This method name is
- usally in the form of op_Operator (e.g. op_Addition).
-
-
-
-
- The secondary method name associated with the method. This method name is
- usually a standard .NET method name with pascal casing (e.g. Add).
-
-
-
-
- Marks a method as not having side effects. used by the combo binder
- to allow calls to methods.
-
-
Provides binding semantics for a language. This include conversions as well as support
@@ -725,16 +407,22 @@
- Provides an opportunity for languages to replace all MemberInfo's with their own type.
+ Provides an opportunity for languages to replace all MemberTracker's with their own type.
- Alternatlely a language can expose MemberInfo's directly.
+ Alternatlely a language can expose MemberTracker's directly.
The member which is being returned to the user.
Tthe type which the memberTrack was accessed from
-
- if a member-injector is defined-on or registered-for this type call it
+
+
+ Determines if the binder should allow access to non-public members.
+
+ By default the binder does not allow access to non-public members. Base classes
+ can inherit and override this value to customize whether or not private binding
+ is available.
+
@@ -755,29 +443,21 @@
doing this for the time being until we get a more robust error return mechanism.
-
+
- Creates the MetaObject for indexing directly into arrays or indexing into objects which have
- default members. Returns null if we're not an indexing operation.
-
-
-
-
- Creates the MetaObject for indexing directly into arrays or indexing into objects which have
- default members. Returns null if we're not an indexing operation.
-
-
-
-
- Creates the meta object for the rest of the operations: comparisons and all other
- ExpressionType. If the operation cannot be completed a MetaObject which indicates an
- error will be returned.
-
-
-
-
- Produces a rule for comparing a value to null - supports comparing object references and nullable types.
+ Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
+ GetBoundMember, and StrongBox instances.
+
+ The name of the member to retrieve. This name is not processed by the DefaultBinder and
+ is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
+
+
+ The MetaObject from which the member is retrieved.
+
+
+ The value being assigned to the target member.
+
@@ -798,6 +478,26 @@
Provides overload resolution and method binding for any calls which need to be performed for the SetMember.
+
+
+ Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
+ GetBoundMember, and StrongBox instances.
+
+
+ The name of the member to retrieve. This name is not processed by the DefaultBinder and
+ is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
+
+
+ The MetaObject from which the member is retrieved.
+
+
+ The value being assigned to the target member.
+
+
+ Provides a DynamicMetaObject that is to be used as the result if the member cannot be set. If null then then a language
+ specific error code is provided by ActionBinder.MakeMissingMemberErrorForAssign which can be overridden by the language.
+
+
Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
@@ -824,6 +524,143 @@
if a member-injector is defined-on or registered-for this type call it
+
+
+ Creates the MetaObject for indexing directly into arrays or indexing into objects which have
+ default members. Returns null if we're not an indexing operation.
+
+
+
+
+ Creates the MetaObject for indexing directly into arrays or indexing into objects which have
+ default members. Returns null if we're not an indexing operation.
+
+
+
+
+ Creates the meta object for the rest of the operations: comparisons and all other
+ ExpressionType. If the operation cannot be completed a MetaObject which indicates an
+ error will be returned.
+
+
+
+
+ Creates the meta object for the rest of the operations: comparisons and all other
+ ExpressionType. If the operation cannot be completed a MetaObject which indicates an
+ error will be returned.
+
+
+
+
+ Produces a rule for comparing a value to null - supports comparing object references and nullable types.
+
+
+
+ if a member-injector is defined-on or registered-for this type call it
+
+
+
+ Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
+ GetBoundMember, and StrongBox instances.
+
+
+ The name of the member to retrieve. This name is not processed by the DefaultBinder and
+ is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
+
+
+ The MetaObject from which the member is retrieved.
+
+
+ Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed.
+
+ The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being
+ returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing
+ so that it has an opportunity to perform custom boxing.
+
+
+
+
+ Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
+ GetBoundMember, and StrongBox instances.
+
+
+ The name of the member to retrieve. This name is not processed by the DefaultBinder and
+ is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
+
+
+ The MetaObject from which the member is retrieved.
+
+
+ Provides overload resolution and method binding for any calls which need to be performed for the GetMember.
+
+
+ Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed.
+
+ The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being
+ returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing
+ so that it has an opportunity to perform custom boxing.
+
+
+
+
+ Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
+ GetBoundMember, and StrongBox instances.
+
+
+ The name of the member to retrieve. This name is not processed by the DefaultBinder and
+ is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
+
+
+ The MetaObject from which the member is retrieved.
+
+
+ An OverloadResolverFactory which can be used for performing overload resolution and method binding.
+
+
+ True if the operation should return Operation.Failed on failure, false if it
+ should return the exception produced by MakeMissingMemberError.
+
+
+ The meta object to be used if the get results in an error.
+
+
+ Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed.
+
+ The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being
+ returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing
+ so that it has an opportunity to perform custom boxing.
+
+
+
+
+ Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
+ GetBoundMember, and StrongBox instances.
+
+
+ The name of the member to retrieve. This name is not processed by the DefaultBinder and
+ is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
+
+
+ The MetaObject from which the member is retrieved.
+
+
+ True if the operation should return Operation.Failed on failure, false if it
+ should return the exception produced by MakeMissingMemberError.
+
+
+ The meta object to be used if the get results in an error.
+
+
+ Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed.
+
+ The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being
+ returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing
+ so that it has an opportunity to perform custom boxing.
+
+
+
+ if a member-injector is defined-on or registered-for this type call it
+
Checks if the conversion is to object and produces a target if it is.
@@ -1042,6 +879,17 @@
tests on the individual keys of the dictionary to ensure they have the same names.
+
+
+ Provides default binding for performing a call on the specified meta objects.
+
+ The signature describing the call
+ The meta object to be called.
+
+ Additional meta objects are the parameters for the call as specified by the CallSignature in the CallAction.
+
+ A MetaObject representing the call or the error.
+
Provides default binding for performing a call on the specified meta objects.
@@ -1054,6 +902,19 @@
Overload resolver factory.
A MetaObject representing the call or the error.
+
+
+ Provides default binding for performing a call on the specified meta objects.
+
+ The signature describing the call
+ The meta object to be called.
+
+ Additional meta objects are the parameters for the call as specified by the CallSignature in the CallAction.
+
+ Overload resolver factory.
+ The result should the object be uncallable.
+ A MetaObject representing the call or the error.
+
Gets a TargetInfo object for performing a call on this object.
@@ -1092,67 +953,35 @@
Attempts to bind to an operator Call method.
-
-
- Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
- GetBoundMember, and StrongBox instances.
-
-
- The name of the member to retrieve. This name is not processed by the DefaultBinder and
- is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
-
-
- The MetaObject from which the member is retrieved.
-
-
- Provides overload resolution and method binding for any calls which need to be performed for the GetMember.
-
-
-
-
- Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod
- GetBoundMember, and StrongBox instances.
-
-
- The name of the member to retrieve. This name is not processed by the DefaultBinder and
- is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc...
-
-
- The MetaObject from which the member is retrieved.
-
-
- An OverloadResolverFactory which can be used for performing overload resolution and method binding.
-
-
- True if the operation should return Operation.Failed on failure, false if it
- should return the exception produced by MakeMissingMemberError.
-
-
- The meta object to be used if the get results in an error.
-
-
-
- if a member-injector is defined-on or registered-for this type call it
-
Helper class for flowing information about the GetMember request.
+
+
+ Helper class for flowing information about the GetMember request.
+
+
Encapsulates information about the target of the call. This includes an implicit instance for the call,
the methods that we'll be calling as well as any restrictions required to perform the call.
-
+
- Helper class for flowing information about the GetMember request.
+ A tree rewriter which will find dynamic sites which consume dynamic sites and
+ turn them into a single combo dynamic site. The combo dynamic site will then run the
+ individual meta binders and produce the resulting code in a single dynamic site.
-
+
- Provides notification that the LightLambda has been compiled.
+ A reducible node which we use to generate the combo dynamic sites. Each time we encounter
+ a dynamic site we replace it with a ComboDynamicSiteExpression. When a child of a dynamic site
+ turns out to be a ComboDynamicSiteExpression we will then merge the child with the parent updating
+ the binding mapping info. If any of the inputs cause side effects then we'll stop the combination.
@@ -1162,25 +991,943 @@
methods for params arrays and param dictionary functions.
-
+
- Stores information needed to emit debugging symbol information for a
- source file, in particular the file name and unique language identifier
+ ArgBuilder provides an argument value used by the MethodBinder. One ArgBuilder exists for each
+ physical parameter defined on a method.
+
+ Contrast this with ParameterWrapper which represents the logical argument passed to the method.
-
+
- The source file name
+ Provides the Expression which provides the value to be passed to the argument.
-
+
- Returns the language's unique identifier, if any
+ Provides the Expression which provides the value to be passed to the argument.
+ This method is called when result is intended to be used ByRef.
-
+
- Returns the language vendor's unique identifier, if any
+ Provides an Expression which will update the provided value after a call to the method.
+ May return null if no update is required.
+
+
+
+
+ SimpleArgBuilder produces the value produced by the user as the argument value. It
+ also tracks information about the original parameter and is used to create extended
+ methods for params arrays and param dictionary functions.
+
+
+
+
+ ArgBuilder provides an argument value used by the MethodBinder. One ArgBuilder exists for each
+ physical parameter defined on a method.
+
+ Contrast this with ParameterWrapper which represents the logical argument passed to the method.
+
+
+
+
+ Provides the Expression which provides the value to be passed to the argument.
+ If null is returned the argument is skipped (not passed to the callee).
+
+
+
+
+ Function for accessing an argument from a given index. When returned from
+ ToDelegate closed over the value will enable delegate invocations for argument
+ gets to be optimized away.
+
+ This function is referenced via reflection and if renamed needs CALLERS UPDATED.
+
+
+
+
+ Provides an Expression which will update the provided value after a call to the method. May
+ return null if no update is required.
+
+
+
+
+ If the argument produces a return value (e.g. a ref or out value) this provides
+ the additional value to be returned.
+
+
+
+
+ The number of actual arguments consumed by this builder.
+
+
+
+
+ Returns the type required for the argument or null if the ArgBuilder
+ does not consume a type.
+
+
+
+
+ An assignable value that is passed to a byref parameter
+ After the call it will contain the updated value
+
+
+
+
+ Parameter info is not available for this argument.
+
+
+
+
+ Type and whether the parameter is a params-array or params-dictionary is derived from info.
+
+
+
+
+ Maps out parameters to return args and ref parameters to ones that don't accept StrongBox.
+
+
+
+
+ Builds the argument for an out argument when not passed a StrongBox. The out parameter
+ is returned as an additional return value.
+
+
+
+
+ Represents an ops-extension method which is used to implement a property.
+
+
+
+
+ Singleton instance returned from an operator method when the operator method cannot provide a value.
+
+
+
+
+ Provides a mechanism for providing documentation stored in an assembly as metadata.
+
+ Applying this attribute will enable documentation to be provided to the user at run-time
+ even if XML Docuementation files are unavailable.
+
+
+
+
+ An attribute that is applied to saved ScriptCode's to be used to re-create the ScriptCode
+ from disk.
+
+
+
+
+ Gets names stored in optimized scope.
+
+
+
+
+ Convention for an individual argument at a callsite.
+
+ Multiple different callsites can match against a single declaration.
+ Some argument kinds can be "unrolled" into multiple arguments, such as list and dictionary.
+
+
+
+
+ Simple unnamed positional argument.
+ In Python: foo(1,2,3) are all simple arguments.
+
+
+
+
+ Argument with associated name at the callsite
+ In Python: foo(a=1)
+
+
+
+
+ Argument containing a list of arguments.
+ In Python: foo(*(1,2*2,3)) would match 'def foo(a,b,c)' with 3 declared arguments such that (a,b,c)=(1,4,3).
+ it could also match 'def foo(*l)' with 1 declared argument such that l=(1,4,3)
+
+
+
+
+ Argument containing a dictionary of named arguments.
+ In Python: foo(**{'a':1, 'b':2})
+
+
+
+
+ Internal class which binds a LanguageContext, StreamContentProvider, and Encoding together to produce
+ a TextContentProvider which reads binary data with the correct language semantics.
+
+
+
+
+ This allows the RemoteConsoleHost to abort a long-running operation. The RemoteConsoleHost itself
+ does not know which ThreadPool thread might be processing the remote call, and so it needs
+ cooperation from the remote runtime server.
+
+
+
+
+ Used to dispatch a single interactive command. It can be used to control things like which Thread
+ the command is executed on, how long the command is allowed to execute, etc
+
+
+
+
+ Since OnOutputDataReceived is sent async, it can arrive late. The remote console
+ cannot know if all output from the current command has been received. So
+ RemoteCommandDispatcher writes out a marker to indicate the end of the output
+
+
+
+
+ Aborts the current active call to Execute by doing Thread.Abort
+
+ true if a Thread.Abort was actually called. false if there is no active call to Execute
+
+
+
+ ArgBuilder which provides a default parameter value for a method call.
+
+
+
+
+ Seeks the first character of a specified line in the text stream.
+
+ The reader.
+ Line number. The current position is assumed to be line #1.
+
+ Returns true if the line is found, false otherwise.
+
+
+
+
+ Reads characters to a string until end position or a terminator is reached.
+ Doesn't include the terminator into the resulting string.
+ Returns null, if the reader is at the end position.
+
+
+
+
+ Reads characters until end position or a terminator is reached.
+ Returns true if the character has been found (the reader is positioned right behind the character),
+ false otherwise.
+
+
+
+
+ The delegate representing the DLR Main function
+
+
+
+
+ Represents a logical Property as a member of a Type. This Property can either be a real
+ concrete Property on a type (implemented with a ReflectedPropertyTracker) or an extension
+ property (implemented with an ExtensionPropertyTracker).
+
+
+
+
+ Represents extension method.
+
+
+
+
+ The declaring type of the extension (the type this extension method extends)
+
+
+
+
+ The declaring type of the extension method. Since this is an extension method,
+ the declaring type is in fact the type this extension method extends,
+ not Method.DeclaringType
+
+
+
+
+ Encapsulates information about the result that should be produced when
+ a OldDynamicAction cannot be performed. The ErrorInfo can hold one of:
+ an expression which creates an Exception to be thrown
+ an expression which produces a value which should be returned
+ directly to the user and represents an error has occured (for
+ example undefined in JavaScript)
+ an expression which produces a value which should be returned
+ directly to the user but does not actually represent an error.
+
+ ErrorInfo's are produced by an ActionBinder in response to a failed
+ binding.
+
+
+
+
+ Private constructor - consumers must use static From* factories
+ to create ErrorInfo objects.
+
+
+
+
+ Creates a new ErrorInfo which represents an exception that should
+ be thrown.
+
+
+
+
+ Creates a new ErrorInfo which represents a value which should be
+ returned to the user.
+
+
+
+
+ Crates a new ErrorInfo which represents a value which should be returned
+ to the user but does not represent an error.
+
+
+
+
+
+
+ The ErrorInfo expression produces an exception
+
+
+
+
+ The ErrorInfo expression produces a value which represents the error (e.g. undefined)
+
+
+
+
+ The ErrorInfo expression produces a value which is not an error
+
+
+
+
+ Returns the list of expressions represented by the instances.
+
+ An array of instances to extract expressions from.
+ The array of expressions.
+
+
+
+ Creates an instance of for a runtime value and the expression that represents it during the binding process.
+
+ The runtime value to be represented by the .
+ An expression to represent this during the binding process.
+ The new instance of .
+
+
+
+ Used as the value for the ScriptingRuntimeHelpers.GetDelegate method caching system
+
+
+
+
+ Generates stub to receive the CLR call and then call the dynamic language code.
+
+
+
+ On error.
+
+
+
+ ScriptCode is an instance of compiled code that is bound to a specific LanguageContext
+ but not a specific ScriptScope. The code can be re-executed multiple times in different
+ scopes. Hosting API counterpart for this class is CompiledCode.
+
+
+
+
+ This takes an assembly name including extension and saves the provided ScriptCode objects into the assembly.
+
+ The provided script codes can constitute code from multiple languages. The assemblyName can be either a fully qualified
+ or a relative path. The DLR will simply save the assembly to the desired location. The assembly is created by the DLR and
+ if a file already exists than an exception is raised.
+
+ The DLR determines the internal format of the ScriptCode and the DLR can feel free to rev this as appropriate.
+
+
+
+
+ This will take an assembly object which the user has loaded and return a new set of ScriptCode�s which have
+ been loaded into the provided ScriptDomainManager.
+
+ If the language associated with the ScriptCode�s has not already been loaded the DLR will load the
+ LanguageContext into the ScriptDomainManager based upon the saved LanguageContext type.
+
+ If the LanguageContext or the version of the DLR the language was compiled against is unavailable a
+ TypeLoadException will be raised unless policy has been applied by the administrator to redirect bindings.
+
+
+
+
+ Provides notification that the LightLambda has been compiled.
+
+
+
+
+ Attaches a cookie to the last emitted instruction.
+
+
+
+
+ This instruction implements a goto expression that can jump out of any expression.
+ It pops values (arguments) from the evaluation stack that the expression tree nodes in between
+ the goto expression and the target label node pushed and not consumed yet.
+ A goto expression can jump into a node that evaluates arguments only if it carries
+ a value and jumps right after the first argument (the carried value will be used as the first argument).
+ Goto can jump into an arbitrary child of a BlockExpression since the block doesn�t accumulate values
+ on evaluation stack as its child expressions are being evaluated.
+
+ Goto needs to execute any finally blocks on the way to the target label.
+
+ {
+ f(1, 2, try { g(3, 4, try { goto L } finally { ... }, 6) } finally { ... }, 7, 8)
+ L: ...
+ }
+
+ The goto expression here jumps to label L while having 4 items on evaluation stack (1, 2, 3 and 4).
+ The jump needs to execute both finally blocks, the first one on stack level 4 the
+ second one on stack level 2. So, it needs to jump the first finally block, pop 2 items from the stack,
+ run second finally block and pop another 2 items from the stack and set instruction pointer to label L.
+
+ Goto also needs to rethrow ThreadAbortException iff it jumps out of a catch handler and
+ the current thread is in "abort requested" state.
+
+
+
+
+ The first instruction of finally block.
+
+
+
+
+ The last instruction of finally block.
+
+
+
+
+ The last instruction of a catch exception handler.
+
+
+
+
+ The last instruction of a fault exception handler.
+
+
+
+
+ Fast creation works if we have a known primitive types for the entire
+ method siganture. If we have any non-primitive types then FastCreate
+ falls back to SlowCreate which works for all types.
+
+ Fast creation is fast because it avoids using reflection (MakeGenericType
+ and Activator.CreateInstance) to create the types. It does this through
+ calling a series of generic methods picking up each strong type of the
+ signature along the way. When it runs out of types it news up the
+ appropriate CallInstruction with the strong-types that have been built up.
+
+ One relaxation is that for return types which are non-primitive types
+ we can fallback to object due to relaxed delegates.
+
+
+
+
+ Creates a new ReflectedCaller which can be used to quickly invoke the provided MethodInfo.
+
+
+
+
+ Gets the next type or null if no more types are available.
+
+
+
+
+ Uses reflection to create new instance of the appropriate ReflectedCaller
+
+
+
+
+ The number of arguments including "this" for instance methods.
+
+
+
+
+ Cached information from a TLB. Only information that is required is saved. CoClasses are used
+ for event hookup. Enums are stored for accessing symbolic names from scripts.
+
+
+
+
+ Reads the latest registered type library for the corresponding GUID,
+ reads definitions of CoClass'es and Enum's from this library
+ and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses
+ and get actual values for the enums.
+
+ Type Library Guid
+ ComTypeLibDesc object
+
+
+
+ Gets an ITypeLib object from OLE Automation compatible RCW ,
+ reads definitions of CoClass'es and Enum's from this library
+ and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses
+ and get actual values for the enums.
+
+ OLE automation compatible RCW
+ ComTypeLibDesc object
+
+
+
+ If the number of items added to the builder is greater than 4 returns a read-only collection builder containing all the items.
+ Returns null otherwise.
+
+
+
+
+ Returns null if no expression was added into the builder.
+ If only a single expression was added returns it.
+ Otherwise returns a containing the expressions added to the builder.
+
+
+
+
+ Updates fields/properties of the returned value with unused keyword parameters.
+
+
+
+
+ Creates a ReturnBuilder
+
+ the type the ReturnBuilder will leave on the stack
+
+
+
+ Represents information about a failure to convert an argument from one
+ type to another.
+
+
+
+
+ Value of the argument or null if it is not available.
+
+
+
+
+ Argument actual type or its limit type if the value not known.
+ DynamicNull if the argument value is null.
+
+
+
+
+ Default value, their was no CallFailure.
+
+
+
+
+ One of more parameters failed to be converted
+
+
+
+
+ One or more keyword arguments could not be successfully assigned to a positional argument
+
+
+
+
+ One or more keyword arguments were duplicated or would have taken the spot of a
+ provided positional argument.
+
+
+
+
+ Type arguments could not be inferred
+
+
+
+
+ Indicates an extension method should be added as a static method, not a instance method.
+
+
+
+
+ MemberGroups are a collection of MemberTrackers which are commonly produced
+ on-demand to talk about the available members. They can consist of a mix of
+ different member types or multiple membes of the same type.
+
+ The most common source of MemberGroups is from ActionBinder.GetMember. From here
+ the DLR will perform binding to the MemberTrackers frequently producing the value
+ resulted from the user. If the result of the action produces a member it's self
+ the ActionBinder can provide the value exposed to the user via ReturnMemberTracker.
+
+ ActionBinder provides default functionality for both getting members from a type
+ as well as exposing the members to the user. Getting members from the type maps
+ closely to reflection and exposing them to the user exposes the MemberTrackers
+ directly.
+
+
+
+
+ Manages creation of interpreted delegates. These delegates will get
+ compiled if they are executed often enough.
+
+
+
+
+ Used by LightLambda to get the compiled delegate.
+
+
+
+
+ Create a compiled delegate for the LightLambda, and saves it so
+ future calls to Run will execute the compiled code instead of
+ interpreting.
+
+
+
+
+ true if the compiled delegate has the same type as the lambda;
+ false if the type was changed for interpretation.
+
+
+
+
+ Implements dynamic call site with many arguments. Wraps the arguments into .
+
+
+
+
+ The parameter description of a method defined in a type library
+
+
+
+
+ Creates a representation for the paramter of a COM method
+
+
+
+
+ Creates a representation for the return value of a COM method
+ TODO: Return values should be represented by a different type
+
+
+
+
+ DBNull.Value if there is no default value
+
+
+
+
+ Allows wrapping of proxy types (like COM RCWs) to expose their IEnumerable functionality
+ which is supported after casting to IEnumerable, even though Reflection will not indicate
+ IEnumerable as a supported interface
+
+
+
+
+ Represents an ops-extension method which is added as an operator.
+
+ The name must be a well-formed name such as "Add" that matches the CLS
+ naming conventions for adding overloads associated with op_* methods.
+
+
+
+
+ Event args for when a ScriptScope has had its contents changed.
+
+
+
+
+ Creates a new ModuleChangeEventArgs object with the specified name and type.
+
+
+
+
+ Creates a nwe ModuleChangeEventArgs with the specified name, type, and changed value.
+
+
+
+
+ Gets the name of the symbol that has changed.
+
+
+
+
+ Gets the way in which the symbol has changed: Set or Delete.
+
+
+
+
+ The the symbol has been set provides the new value.
+
+
+
+
+ Marks a class in the assembly as being an extension type for another type.
+
+
+
+
+ Marks a type in the assembly as being an extension type for another type.
+
+ The type which is being extended
+ The type which provides the extension members.
+
+
+
+ The type which contains extension members which are added to the type being extended.
+
+
+
+
+ The type which is being extended by the extension type.
+
+
+
+
+ The MethodBinder will perform normal method binding.
+
+
+
+
+ The MethodBinder will return the languages definition of NotImplemented if the arguments are
+ incompatible with the signature.
+
+
+
+
+ The MethodBinder will set properties/fields for unused keyword arguments on the instance
+ that gets returned from the method.
+
+
+
+
+ This is a helper class for runtime-callable-wrappers of COM instances. We create one instance of this type
+ for every generic RCW instance.
+
+
+
+
+ The runtime-callable wrapper
+
+
+
+
+ This is the factory method to get the ComObject corresponding to an RCW
+
+
+
+
+
+ Invokes the object. If it falls back, just produce an error.
+
+
+
+
+ Splats the arguments to another nested dynamic site, which does the
+ real invocation of the IDynamicMetaObjectProvider.
+
+
+
+
+ The purpose of this rewriter is simple: ETs do not allow jumps (break, continue, return, goto)
+ that would go through a finally/fault. So we replace them with code that instead stores a flag,
+ and then jumps to the end of the finally/fault. At the end of the try-finally, we emit a switch
+ that then jumps to the correct label.
+
+ A few things that make this more complicated:
+
+ 1. If a finally contains a jump out, then jumps in the try/catch need to be replaced as well.
+ It's to support cases like this:
+ # returns 234
+ def foo():
+ try: return 123
+ finally: return 234
+
+ We need to replace the "return 123" because after it jumps, we'll go to the finally, which
+ might decide to jump again, but once the IL finally exits, it ignores the finally jump and
+ keeps going with the original jump. The moral of the story is: if any jumps in finally are
+ rewritten, try/catch jumps must be also.
+
+ 2. To generate better code, we only have one state variable, so if we have to jump out of
+ multiple finallys we just keep jumping. It looks sort of like this:
+ foo:
+ try { ... } finally {
+ try { ... } finally {
+ ...
+ if (...) {
+ // was: goto foo;
+ $flow = 1; goto endInnerFinally;
+ }
+ ...
+ endInnerFinally:
+ }
+ switch ($flow) {
+ case 1: goto endOuterFinally;
+ }
+ ...
+ endOuterFinally:
+ }
+ switch ($flow) {
+ case 1: $flow = 0; goto foo;
+ }
+ ...
+
+
+
+
+
+ Builds the parameter for a params dictionary argument - this collects all the extra name/value
+ pairs provided to the function into a SymbolDictionary which is passed to the function.
+
+
+
+
+ The number of actual arguments consumed by this builder.
+
+
+
+
+ Indicates the specific type of failure, if any, from binding to a method.
+
+
+
+
+ The binding succeeded. Only one method was applicable or had the best conversion.
+
+
+
+
+ More than one method was applicable for the provided parameters and no method was considered the best.
+
+
+
+
+ There are no overloads that match the number of parameters required for the call
+
+
+
+
+ None of the target method(s) can successfully be called. The failure can be due to:
+ 1. Arguments could not be successfully converted for the call
+ 2. Keyword arguments could not be assigned to positional arguments
+ 3. Keyword arguments could be assigned but would result in an argument being assigned
+ multiple times (keyword and positional arguments conflit or dupliate keyword arguments).
+
+
+
+
+ Actual arguments cannot be constructed.
+
+
+
+
+ No method is callable. For example, all methods have an unbound generic parameter.
+
+
+
+
+ Converts a generic ICollection of T into an array of T.
+
+ If the collection is already an array of T the original collection is returned.
+
+
+
+
+ Converts a generic ICollection of T into an array of R using a given conversion.
+
+ If the collection is already an array of R the original collection is returned.
+
+
+
+
+ Used as the key for the LanguageContext.GetDelegate method caching system
+
+
+
+
+ Implements explicit casts supported by the runtime.
+
+
+ Implements explicit casts supported by the runtime.
+
+
+
+
+ Explicitly casts the object to a given type (and returns it as object)
+
+
+
+
+ Represents the context that is flowed for doing Compiler. Languages can derive
+ from this class to provide additional contextual information.
+
+
+
+
+ Source unit currently being compiled in the CompilerContext
+
+
+
+
+ Current error sink.
+
+
+
+
+ Sink for parser callbacks (e.g. brace matching, etc.).
+
+
+
+
+ Compiler specific options.
+
+
+
+
+ A single interpreted frame might be represented by multiple subsequent Interpreter.Run CLR frames.
+ This method filters out the duplicate CLR frames.
+
+
+
+
+ ComEventSinkProxy class is responsible for handling QIs for sourceIid
+ on instances of ComEventSink.
+
+ Background: When a COM even sink advises to a connection point it is
+ supposed to hand over the dispinterface. Now, some hosts will trust
+ the COM client to pass the correct pointer, but some will not.
+ E.g. Excel's implementation of Connection Points will not cause a
+ QI on the pointer that has been passed, however Word will QI the
+ pointer to return the required interface.
+
+ ComEventSink does not, strongly speaking, implements the interface
+ that it claims to implement - it is just "faking" it by using IReflect.
+ Thus, Word's QIs on the pointer passed to ICP::Advise would fail. To
+ prevent this we take advangate of RealProxy's ability of
+ "dressing up" like other classes and hence successfully respond to QIs
+ for interfaces that it does not really support( it is OK to say
+ "I implement this interface" for event sinks only since the common
+ practice is to use IDistpach.Invoke when calling into event sinks).
+
+
+
+
+ Specifies the action for which the default binder is requesting a member.
+
+
+
+
+ Interceptor prototype. The interceptor is a call site binder that wraps
+ a real call site binder and can perform arbitrary operations on the expression
+ trees that the wrapped binder produces:
+ * Dumping the trees
+ * Additional rewriting
+ * Static compilation
+ * ...
@@ -1202,364 +1949,388 @@
fill in those spots w/ extra ParameterWrapper's.
-
+
- Encapsulates the result of an attempt to bind to one or methods using the OverloadResolver.
+ Exposes a IDictionary<SymbolId, object> as a IDictionary<object, object<
+
+
+
+
+ Simple thread-safe SymbolDictionary used for storing collections of members.
- Users should first check the Result property to see if the binding was successful or
- to determine the specific type of failure that occured. If the binding was successful
- MakeExpression can then be called to create an expression which calls the method.
- If the binding was a failure callers can then create a custom error message based upon
- the reason the call failed.
+ Like all SymbolDictionaries this supports both indexing using SymbolId's (IAttributesCollection)
+ and via object keys (IDictionary<object, object>).
-
+
- Creates a new BindingTarget when the method binding has succeeded.
-
-
-
-
- Creates a new BindingTarget when the method binding has failed due to an incorrect argument count
-
-
-
-
- Creates a new BindingTarget when the method binding has failued due to
- one or more parameters which could not be converted.
-
-
-
-
- Creates a new BindingTarget when the match was ambiguous
-
-
-
-
- Other failure.
-
-
-
-
- Gets an Expression which calls the binding target if the method binding succeeded.
+ Base class for SymbolId dictionaries.
- Throws InvalidOperationException if the binding failed.
-
-
-
-
- Gets the result of the attempt to bind.
-
-
-
-
- Returns the method if the binding succeeded, or null if no method was applicable.
-
-
-
-
- Gets the name of the method as supplied to the OverloadResolver.
-
-
-
-
- Returns the MethodTarget if the binding succeeded, or null if no method was applicable.
-
-
-
-
- Returns the methods which don't have any matches or null if Result == BindingResult.AmbiguousMatch
-
-
-
-
- Returns the methods and their associated conversion failures if Result == BindingResult.CallFailure.
-
-
-
-
- Returns the acceptable number of arguments which can be passed to the method if Result == BindingResult.IncorrectArgumentCount.
-
-
-
-
- Returns the total number of arguments provided to the call. 0 if the call succeeded or failed for a reason other
- than argument count mismatch.
-
-
-
-
- Gets the MetaObjects which we originally did binding against in their restricted form.
+ SymbolId dictionaries are fast dictionaries used for looking up members of classes,
+ function environments, function locals, and other places which are typically indexed by
+ string names.
- The members of the array correspond to each of the arguments. All members of the array
- have a value.
+ SymbolId dictionaries support both keying by SymbolId (the common case) and object keys
+ (supporting late bound access to the dictionary as a normal Dictionary<object, object>
+ when exposed directly to user code). When indexed by objects null is a valid value for the
+ key.
-
+
- Returns the return type of the binding, or null if no method was applicable.
+ Provides hashing and equality based upon the value of the object instead of the reference.
-
+
- Returns the NarrowingLevel of the method if the call succeeded. If the call
- failed returns NarrowingLevel.None.
+ Gets the hash code for the value of the instance.
+
+ A hash code
+ The type is mutable and cannot be hashed by value
+
+
+
+ Determines if two values are equal
+
+ The object to compare the current object against.
+ Returns true if the objects are equal, false if they are not.
+
+
+
+ Creates a new SymbolIdDictBase from the specified creating context which will be
+ used for comparisons.
-
+
- Returns true if the binding was succesful, false if it failed.
+ Symbol dictionaries are usually indexed using literal strings, which is handled using the Symbols.
+ However, some languages allow non-string keys too. We handle this case by lazily creating an object-keyed dictionary,
+ and keeping it in the symbol-indexed dictionary. Such access is slower, which is acceptable.
+
+
+
+
+ Sets the value at the given index for a tuple of the given size. This set supports
+ walking through nested tuples to get the correct final index.
+
+
+
+
+ Gets the value at the given index for a tuple of the given size. This get
+ supports walking through nested tuples to get the correct final index.
+
+
+
+
+ Gets the unbound generic Tuple type which has at lease size slots or null if a large enough tuple is not available.
+
+
+
+
+ Creates a generic tuple with the specified types.
- This is an alias for BindingTarget.Result == BindingResult.Success.
+ If the number of slots fits within the maximum tuple size then we simply
+ create a single tuple. If it's greater then we create nested tuples
+ (e.g. a Tuple`2 which contains a Tuple`128 and a Tuple`8 if we had a size of 136).
-
+
- A NullTextContentProvider to be provided when we have a pre-compiled ScriptCode which doesn't
- have source code associated with it.
+ Gets the number of usable slots in the provided Tuple type including slots available in nested tuples.
-
+
- The MethodBinder will perform normal method binding.
+ Creates a new instance of tupleType with the specified args. If the tuple is a nested
+ tuple the values are added in their nested forms.
-
+
- The MethodBinder will return the languages definition of NotImplemented if the arguments are
- incompatible with the signature.
+ Gets the values from a tuple including unpacking nested values.
-
+
- The MethodBinder will set properties/fields for unused keyword arguments on the instance
- that gets returned from the method.
+ Gets the series of properties that needs to be accessed to access a logical item in a potentially nested tuple.
-
+
- MethodGroup's represent a unique collection of method's. Typically this
- unique set is all the methods which are overloaded by the same name including
- methods with different arity. These methods represent a single logically
- overloaded element of a .NET type.
+ Gets the series of properties that needs to be accessed to access a logical item in a potentially nested tuple.
+
+
+
+
+ Provides an expression for creating a tuple with the specified values.
+
+
+
+
+ Returns a numerical code of the size of a type. All types get both a horizontal
+ and vertical code. Types that are lower in both dimensions have implicit conversions
+ to types that are higher in both dimensions.
+
+
+
+
+ Efficiently tracks (line,column) information as text is added, and
+ collects line mappings between the original and generated source code
+ so we can generate correct debugging information later
+
+
+
+
+ Marks the current position of the writer as corresponding to the
+ original location passed in
+
+ the line pragma corresponding to the
+ current position in the generated code
+
+
+
+ A useful interface for taking slices of numeric arrays, inspired by Python's Slice objects.
+
+
+
+
+ The starting index of the slice or null if no first index defined
+
+
+
+
+ The ending index of the slice or null if no ending index defined
+
+
+
+
+ The length of step to take
+
+
+
+
+ marks a field, class, or struct as being safe to have statics which can be accessed
+ from multiple runtimes.
- The base DLR binders will produce MethodGroup's when provided with a MemberGroup
- which contains only methods. The MethodGroup's will be unique instances per
- each unique group of methods.
+ Static fields which are not read-only or marked with this attribute will be flagged
+ by a test which looks for state being shared between runtimes. Before applying this
+ attribute you should ensure that it is safe to share the state. This is typically
+ state which is lazy initialized or state which is caching values which are identical
+ in all runtimes and are immutable.
-
+
- Returns a BuiltinFunction bound to the provided type arguments. Returns null if the binding
- cannot be performed.
+ A parameterless generator, that is of type IEnumerable, IEnumerable{T},
+ IEnumerator, or IEnumerator{T}. Its body can contain a series of
+ YieldExpressions. Each call into MoveNext on the enumerator reenters
+ the generator, and executes until it reaches a YieldReturn or YieldBreak
+ expression
-
+
- Gets the stub list for a COM Object. For COM objects we store the stub list
- directly on the object using the Marshal APIs. This allows us to not have
- any circular references to deal with via weak references which are challenging
- in the face of COM.
+ The label used by YieldBreak and YieldReturn expressions to yield
+ from this generator
-
+
- Doesn't need to check PrivateBinding setting: no method that is part of the event is public the entire event is private.
- If the code has already a reference to the event tracker instance for a private event its "static-ness" is not influenced
- by private-binding setting.
+ The body of the generator, which can contain YieldBreak and
+ YieldReturn expressions
-
+
- Holds on a list of delegates hooked to the event.
- We need the list because we cannot enumerate the delegates hooked to CLR event and we need to do so in
- handler removal (we need to do custom delegate comparison there). If BCL enables the enumeration we could remove this.
+ Provides a simple expression which enables embedding FieldBuilder's
+ in an AST before the type is complete.
-
+
- Storage for the handlers - a key value pair of the callable object and the delegate handler.
+ Represents a collection of MethodCandidate's which all accept the
+ same number of logical parameters. For example a params method
+ and a method with 3 parameters would both be a CandidateSet for 3 parameters.
-
+
- Storage for the handlers - a key value pair of the callable object and the delegate handler.
+ Abstract base class used for optimized thread-safe SymbolDictionaries.
- The delegate handler is closed over the callable object. Therefore as long as the object is alive the
- delegate will stay alive and so will the callable object. That means it's fine to have a weak reference
- to both of these objects.
-
-
-
-
- Provides fast strongly typed thread local storage. This is significantly faster than
- Thread.GetData/SetData.
-
-
-
-
- True if the caller will guarantee that all cleanup happens as the thread
- unwinds.
+ Implementers derive from this class and override the GetExtraKeys, TrySetExtraValue,
+ and TryGetExtraValue methods. When looking up a value first the extra keys will be
+ searched using the optimized Try*ExtraValue functions. If the value isn't found there
+ then the value is stored in the underlying .NET dictionary.
- This is typically used in a case where the thread local is surrounded by
- a try/finally block. The try block pushes some state, the finally block
- restores the previous state. Therefore when the thread exits the thread
- local is back to it's original state. This allows the ThreadLocal object
- to not check the current owning thread on retrieval.
+ Implementors can optionally override the object key functionality to store object keys
+ using their own mechanism. By default object keys are stored in their own dictionary
+ which is stored in the primary SymbolId dictionary under an invalid symbol id.
-
+
- Gets the current value if its not == null or calls the provided function
- to create a new value.
+ Gets a list of the extra keys that are cached by the the optimized implementation
+ of the module.
-
+
- Calls the provided update function with the current value and
- replaces the current value with the result of the function.
+ Try to set the extra value and return true if the specified key was found in the
+ list of extra values.
-
+
- Replaces the current value with a new one and returns the old value.
+ Try to get the extra value and returns true if the specified key was found in the
+ list of extra values. Returns true even if the value is Uninitialized.
-
+
- Gets the StorageInfo for the current thread.
+ Field dictionaries are usually indexed using literal strings, which is handled using the Symbols.
+ However, Python does allow non-string keys too. We handle this case by lazily creating an object-keyed dictionary,
+ and keeping it in the symbol-indexed dictionary. Such access is slower, which is acceptable.
-
+
- Called when the fast path storage lookup fails. if we encountered the Empty storage
- during the initial fast check then spin until we hit non-empty storage and try the fast
- path again.
+ Appends the object keys to the provided list.
-
+
- Creates the StorageInfo for the thread when one isn't already present.
+ Appends the values stored under object keys to the provided list.
-
+
- Gets or sets the value for the current thread.
+ Gets the count of object keys.
-
+
- Helper class for storing the value. We need to track if a ManagedThreadId
- has been re-used so we also store the thread which owns the value.
+ Gets an IDictionaryEnumerator for all of the object key/value pairs.
-
+
- Helper methods that calls are generated to from the default DLR binders.
+ Stores the specified value under the specified object key.
-
+
- Helper function to combine an object array with a sequence of additional parameters that has been splatted for a function call.
+ Removes the specified object key from the dictionary.
-
+
- EventInfo.EventHandlerType getter is marked SecuritySafeCritical in CoreCLR
- This method is to get to the property without using Reflection
-
-
-
-
-
-
- Command line hosting service.
-
-
-
-
- Executes the comand line - depending upon the options provided we will
- either run a single file, a single command, or enter the interactive loop.
-
-
-
-
- Runs the command line. Languages can override this to provide custom behavior other than:
- 1. Running a single command
- 2. Running a file
- 3. Entering the interactive console loop.
-
-
-
-
-
- Runs the specified filename
-
-
-
-
- Starts the interactive loop. Performs any initialization necessary before
- starting the loop and then calls RunInteractiveLoop to start the loop.
+ Attemps to get the value stored under the specified object key.
- Returns the exit code when the interactive loop is completed.
+ Returns true if the key was found, false if not found.
-
+
+ Specifies that the member is a constructor, representing a ConstructorTracker
+
+
+ Specifies that the member is an event, representing a EventTracker
+
+
+ Specifies that the member is a field, representing a FieldTracker
+
+
+ Specifies that the member is a method, representing a MethodTracker
+
+
+ Specifies that the member is a property, representing a PropertyTracker
+
+
+ Specifies that the member is a property, representing a TypeTracker
+
+
+ Specifies that the member is a namespace, representing a NamespaceTracker
+
+
+ Specifies that the member is a group of method overloads, representing a MethodGroup
+
+
+ Specifies that the member is a group of types that very by arity, representing a TypeGroup
+
+
+ Specifies that the member is a custom meber, represetning a CustomTracker
+
+
+ Specifies that the member is a bound to an instance, representing a BoundMemberTracker
+
+
- Runs the interactive loop. Repeatedly parse and run interactive actions
- until an exit code is received. If any exceptions are unhandled displays
- them to the console
+ A simple hashset, built on Dictionary{K, V}
-
+
- Attempts to run a single interaction and handle any language-specific
- exceptions. Base classes can override this and call the base implementation
- surrounded with their own exception handling.
-
- Returns null if successful and execution should continue, or an exit code.
+ Thread safe dictionary that allows lazy-creation where readers will block for
+ the creation of the lazily created value. Call GetOrCreateValue w/ a key
+ and a callback function. If the value exists it is returned, if not the create
+ callback is called (w/o any locks held). The create call back will only be called
+ once for each key.
-
+
- Parses a single interactive command or a set of statements and executes it.
-
- Returns null if successful and execution should continue, or the appropiate exit code.
-
- We check if the code read is an interactive command or statements is by checking for NewLine
- If the code contains NewLine, it's a set of statements (most probably from SendToConsole)
- If the code does not contain a NewLine, it's an interactive command typed by the user at the prompt
+ Helper class which stores the published value
-
+
- Private helper function to see if we should treat the current input as a blank link.
-
- We do this if we only have auto-indent text.
+ Builds up a series of conditionals when the False clause isn't yet known. We can
+ keep appending conditions and if true's. Each subsequent true branch becomes the
+ false branch of the previous condition and body. Finally a non-conditional terminating
+ branch must be added.
-
+
- Read a statement, which can potentially be a multiple-line statement suite (like a class declaration).
-
- Should the console session continue, or did the user indicate
- that it should be terminated?
- Expression to evaluate. null for empty input
-
-
-
- Gets the next level for auto-indentation
+ Adds a new conditional and body. The first call this becomes the top-level
+ conditional, subsequent calls will have it added as false statement of the
+ previous conditional.
-
+
- Scope is not remotable, and this only works in the same AppDomain.
+ Adds the non-conditional terminating node.
-
+
- Used to dispatch a single interactive command. It can be used to control things like which Thread
- the command is executed on, how long the command is allowed to execute, etc
+ Gets the resulting meta object for the full body. FinishCondition
+ must have been called.
+
+
+
+
+ Adds a variable which will be scoped at the level of the final expression.
+
+
+
+
+ A binder which can combine multiple binders into a single dynamic site. The creator
+ of this needs to perform the mapping of parameters, constants, and sub-site expressions
+ and provide a List of BinderMappingInfo representing this data. From there the ComboBinder
+ just processes the list to create the resulting code.
+
+
+
+
+ Provides a mapping for inputs of combo action expressions. The input can map
+ to either an input of the new dynamic site, an input of a previous DynamicExpression,
+ or a ConstantExpression which has been pulled out of the dynamic site arguments.
+
+
+
+
+ Contains the mapping information for a single Combo Binder. This includes the original
+ meta-binder and the mapping of parameters, sub-sites, and constants into the binding.
@@ -1786,569 +2557,71 @@
Semantics match C# compiler behavior
-
-
- ArgBuilder which always produces null.
-
-
-
-
- The parameter description of a method defined in a type library
-
-
-
-
- Creates a representation for the paramter of a COM method
-
-
-
-
- Creates a representation for the return value of a COM method
- TODO: Return values should be represented by a different type
-
-
-
-
- DBNull.Value if there is no default value
-
-
-
-
- ParameterWrapper represents the logical view of a parameter. For eg. the byref-reduced signature
- of a method with byref parameters will be represented using a ParameterWrapper of the underlying
- element type, since the logical view of the byref-reduced signature is that the argument will be
- passed by value (and the updated value is included in the return value).
+
+
+ Supports detecting the remote runtime being killed, and starting up a new one.
+
+ Threading model:
+
+ ConsoleRestartManager creates a separate thread on which to create and execute the consoles.
+ There are usually atleast three threads involved:
+
+ 1. Main app thread: Instantiates ConsoleRestartManager and accesses its APIs. This thread has to stay
+ responsive to user input and so the ConsoleRestartManager APIs cannot be long-running or blocking.
+ Since the remote runtime process can terminate asynchronously, the current RemoteConsoleHost can
+ change at any time (if auto-restart is enabled). The app should typically not care which instance of
+ RemoteConsoleHost is currently being used. The flowchart of this thread is:
+ Create ConsoleRestartManager
+ ConsoleRestartManager.Start
+ Loop:
+ Respond to user input | Send user input to console for execution | BreakExecution | RestartConsole | GetMemberNames
+ ConsoleRestartManager.Terminate
+ TODO: Currently, BreakExecution and GetMemberNames are called by the main thread synchronously.
+ Since they execute code in the remote runtime, they could take arbitrarily long. We should change
+ this so that the main app thread can never be blocked indefinitely.
- Contrast this with ArgBuilder which represents the real physical argument passed to the method.
-
-
-
-
- ParameterInfo is not available.
-
-
-
-
- Creates a parameter that represents an expanded item of params-array.
-
-
-
-
- True if the wrapper represents a params-array parameter (false for parameters created by expansion of a params-array).
-
-
-
-
- True if the wrapper represents a params-dict parameter (false for parameters created by expansion of a params-dict).
-
-
-
-
- Narrowing conversions are conversions that cannot be proved to always succeed, conversions that are
- known to possibly lose information, and conversions across domains of types sufficiently different
- to merit narrowing notation like casts.
+ 2. Console thread: Dedicated thread for creating RemoteConsoleHosts and executing code (which could
+ take a long time or block indefinitely).
+ Wait for ConsoleRestartManager.Start to be called
+ Loop:
+ Create RemoteConsoleHost
+ Wait for signal for:
+ Execute code | RestartConsole | Process.Exited
- Its upto every language to define the levels for conversions. The narrowling levels can be used by
- for method overload resolution, where the overload is based on the parameter types (and not the number
- of parameters).
-
+ 3. CompletionPort async callbacks:
+ Process.Exited | Process.OutputDataReceived | Process.ErrorDataReceived
+
+ 4. Finalizer thred
+ Some objects may have a Finalize method (which possibly calls Dispose). Not many (if any) types
+ should have a Finalize method.
+
+
-
+
- Conversions at this level do not do any narrowing. Typically, this will include
- implicit numeric conversions, Type.IsAssignableFrom, StringBuilder to string, etc.
+ Accessing _remoteConsoleHost from a thread other than console thread can result in race.
+ If _remoteConsoleHost is accessed while holding _accessLock, it is guaranteed to be
+ null or non-disposed.
-
+
- Language defined prefered narrowing conversion. First level that introduces narrowing
- conversions.
+ This is created on the "creating thread", and goes on standby. Start needs to be called for activation.
+ A host might want one of two behaviors:
+ 1. Keep the REPL loop alive indefinitely, even when a specific instance of the RemoteConsoleHost terminates normally
+ 2. Close the REPL loop when an instance of the RemoteConsoleHost terminates normally, and restart the loop
+ only if the instance terminates abnormally.
-
+
- Language defined preferred narrowing conversion. Second level that introduces narrowing
- conversions and should have more conversions than One.
+ Needs to be called for activation.
-
-
- Language defined preferred narrowing conversion. Third level that introduces narrowing
- conversions and should have more conversions that Two.
-
-
-
-
- A somewhat meaningful conversion is possible, but it will quite likely be lossy.
- For eg. BigInteger to an Int32, Boolean to Int32, one-char string to a char,
- larger number type to a smaller numeric type (where there is no overflow), etc
-
-
-
-
- Helper for storing information about stack frames.
-
-
-
-
- Represents the top reflected package which contains extra information such as
- all the assemblies loaded and the built-in modules.
-
-
-
-
- NamespaceTracker represent a CLS namespace.
-
-
-
-
- Loads all the types from all assemblies that contribute to the current namespace (but not child namespaces)
-
-
-
-
- Populates the tree with nodes for each part of the namespace
-
-
- Full namespace name. It can be null (for top-level types)
-
-
-
-
- As a fallback, so if the type does exist in any assembly. This would happen if a new type was added
- that was not in the hardcoded list of types.
- This code is not accurate because:
- 1. We dont deal with generic types (TypeCollision).
- 2. Previous calls to GetCustomMemberNames (eg. "from foo import *" in Python) would not have included this type.
- 3. This does not deal with new namespaces added to the assembly
-
-
-
-
- This stores all the public non-nested type names in a single namespace and from a single assembly.
- This allows inspection of the namespace without eagerly loading all the types. Eagerly loading
- types slows down startup, increases working set, and is semantically incorrect as it can trigger
- TypeLoadExceptions sooner than required.
-
-
-
-
- returns the package associated with the specified namespace and
- updates the associated module to mark the package as imported.
-
-
-
-
- Ensures that the assembly is loaded
-
-
- true if the assembly was loaded for the first time.
- false if the assembly had already been loaded before
-
-
-
- When an (interop) assembly is loaded, we scan it to discover the GUIDs of COM interfaces so that we can
- associate the type definition with COM objects with that GUID.
- Since scanning all loaded assemblies can be expensive, in the future, we might consider a more explicit
- user binder to trigger scanning of COM types.
-
-
-
-
- TODO: Alternatively, it should be sufficient to remember indices for this, list, dict and block.
-
-
-
-
- Fast creation works if we have a known primitive types for the entire
- method siganture. If we have any non-primitive types then FastCreate
- falls back to SlowCreate which works for all types.
-
- Fast creation is fast because it avoids using reflection (MakeGenericType
- and Activator.CreateInstance) to create the types. It does this through
- calling a series of generic methods picking up each strong type of the
- signature along the way. When it runs out of types it news up the
- appropriate ReflectedCaller with the strong-types that have been built up.
-
- One relaxation is that for return types which are non-primitive types
- we can fallback to object due to relaxed delegates.
-
-
-
-
- Creates a new ReflectedCaller which can be used to quickly invoke the provided MethodInfo.
-
-
-
-
- Gets the next type or null if no more types are available.
-
-
-
-
- Uses reflection to create new instance of the appropriate ReflectedCaller
-
-
-
-
- List optimized for few writes and multiple reads. It provides thread-safe read and write access.
- Iteration is not thread-safe by default, but GetCopyForRead allows for iteration
- without taking a lock.
-
-
-
-
- Gets a copy of the contents of the list. The copy will not change even if the original
- CopyOnWriteList object is modified. This method should be used to iterate the list in
- a thread-safe way if no lock is taken. Iterating on the original list is not guaranteed
- to be thread-safe.
-
- The returned copy should not be modified by the caller.
-
-
-
- Core functionality to implement an interactive console. This should be derived for concrete implementations
-
-
-
+
Request (from another thread) the console REPL loop to terminate
- The caller can specify the exitCode corresponding to the event triggering
- the termination. This will be returned from CommandLine.Run
-
-
-
- To be called from entry point.
-
-
-
-
- Console Host entry-point .exe name.
-
-
-
-
- Returns Microsoft.Scripting.Runtime.DynamicNull if the object contains a null value,
- otherwise, returns self.LimitType
-
-
-
-
- Returns Microsoft.Scripting.Runtime.DynamicNull if the object contains a null value,
- otherwise, returns self.RuntimeType
-
-
-
-
- arbitrary precision integers
-
-
-
-
- Create a BigInteger from a little-endian twos-complement byte array
- (inverse of ToByteArray())
-
-
-
-
- Return the magnitude of this BigInteger as an array of zero or more uints.
- Element zero is the value of the least significant four bytes, element one is
- the value of the four next most significant bytes, etc.
-
- The returned data is the unsigned magnitude of the number. To determine the sign,
- use GetSign().
-
- It is guaranteed that the highest element of the returned array is never zero.
- This means that if the value of this BigInteger is zero, a zero-length array
- is returned.
-
-
-
-
- Do an in-place twos complement of d and also return the result.
-
-
-
-
- Calculates the natural logarithm of the BigInteger.
-
-
-
-
- Calculates log base 10 of a BigInteger.
-
-
-
-
- Return the value of this BigInteger as a little-endian twos-complement
- byte array, using the fewest number of bytes possible. If the value is zero,
- return an array of one byte whose element is 0x00.
-
-
-
-
- Return the sign of this BigInteger: -1, 0, or 1.
-
-
-
-
- This instruction implements a goto expression that can jump out of any expression.
- It pops values (arguments) from the evaluation stack that the expression tree nodes in between
- the goto expression and the target label node pushed and not consumed yet.
- A goto expression can jump into a node that evaluates arguments only if it carries
- a value and jumps right after the first argument (the carried value will be used as the first argument).
- Goto can jump into an arbitrary child of a BlockExpression since the block doesn�t accumulate values
- on evaluation stack as its child expressions are being evaluated.
-
- Goto needs to execute any finally blocks on the way to the target label.
-
- {
- f(1, 2, try { g(3, 4, try { goto L } finally { ... }, 6) } finally { ... }, 7, 8)
- L: ...
- }
-
- The goto expression here jumps to label L while having 4 items on evaluation stack (1, 2, 3 and 4).
- The jump needs to execute both finally blocks, the first one on stack level 4 the
- second one on stack level 2. So, it needs to jump the first finally block, pop 2 items from the stack,
- run second finally block and pop another 2 items from the stack and set instruction pointer to label L.
-
- Goto also needs to rethrow ThreadAbortException iff it jumps out of a catch handler and
- the current thread is in "abort requested" state.
-
-
-
-
- The purpose of this rewriter is simple: ETs do not allow jumps (break, continue, return, goto)
- that would go through a finally/fault. So we replace them with code that instead stores a flag,
- and then jumps to the end of the finally/fault. At the end of the try-finally, we emit a switch
- that then jumps to the correct label.
-
- A few things that make this more complicated:
-
- 1. If a finally contains a jump out, then jumps in the try/catch need to be replaced as well.
- It's to support cases like this:
- # returns 234
- def foo():
- try: return 123
- finally: return 234
-
- We need to replace the "return 123" because after it jumps, we'll go to the finally, which
- might decide to jump again, but once the IL finally exits, it ignores the finally jump and
- keeps going with the original jump. The moral of the story is: if any jumps in finally are
- rewritten, try/catch jumps must be also.
-
- 2. To generate better code, we only have one state variable, so if we have to jump out of
- multiple finallys we just keep jumping. It looks sort of like this:
- foo:
- try { ... } finally {
- try { ... } finally {
- ...
- if (...) {
- // was: goto foo;
- $flow = 1; goto endInnerFinally;
- }
- ...
- endInnerFinally:
- }
- switch ($flow) {
- case 1: goto endOuterFinally;
- }
- ...
- endOuterFinally:
- }
- switch ($flow) {
- case 1: $flow = 0; goto foo;
- }
- ...
-
-
-
-
-
- Represents the reason why a call to a specific method could not be performed by the OverloadResolver.
-
- The reason for the failure is specified by the CallFailureReason property. Once this property
- has been consulted the other properties can be consulted for more detailed information regarding
- the failure.
-
- If reason is ConversionFailure the ConversionResults property will be non-null.
- If reason is UnassignableKeyword the KeywordArguments property will be non-null and include
- the keywords which could not be assigned.
- If reason is DuplicateKeyword the KeywordArguments property will be non-null and include
- the keywords which were duplicated (either by the keywords themselves or by positional
- arguments).
-
- MethodTarget is always set and indicates the method which failed to bind.
-
-
-
-
- Gets the MethodTarget which the call failed for.
-
-
-
-
- Gets the reason for the call failure which determines the other
- properties of the CallFailure which should be consulted.
-
-
-
-
- Gets a list of ConversionResult's for each parameter indicating
- whether the conversion was successful or failed and the types
- being converted.
-
-
-
-
- Gets the list of keyword arguments that were either dupliated or
- unassignable.
-
-
-
-
- Serializes constants and dynamic sites so the code can be saved to disk
-
-
-
-
- Represents an array that has value equality.
-
-
-
-
- Represents the context that is flowed for doing Compiler. Languages can derive
- from this class to provide additional contextual information.
-
-
-
-
- Source unit currently being compiled in the CompilerContext
-
-
-
-
- Current error sink.
-
-
-
-
- Sink for parser callbacks (e.g. brace matching, etc.).
-
-
-
-
- Compiler specific options.
-
-
-
-
- Represents a SymbolId constant
- This node is reducible, and also rewritten by GlobalOptimizedRewriter
-
- TODO: this node exists so GlobalOptimizedRewriter can recognize and
- rewrite a strongly typed node. Once that functionality is gone it
- should go away.
- When this type goes away, change the return type of
- Microsoft.Scripting.Ast.Utils.Constant(object) from Expression to ConstantExpression.
-
-
-
-
- These are some generally useful helper methods. Currently the only methods are those to
- cached boxed representations of commonly used primitive types so that they can be shared.
- This is useful to most dynamic languages that use object as a universal type.
-
- The methods in RuntimeHelepers are caleld by the generated code. From here the methods may
- dispatch to other parts of the runtime to get bulk of the work done, but the entry points
- should be here.
-
-
-
-
- A singleton boxed boolean true.
-
-
-
-
- A singleton boxed boolean false.
-
-
-
-
- Gets a singleton boxed value for the given integer if possible, otherwise boxes the integer.
-
- The value to box.
- The boxed value.
-
-
-
- Helper method to create an instance. Work around for Silverlight where Activator.CreateInstance
- is SecuritySafeCritical.
-
- TODO: Why can't we just emit the right thing for default(T)?
- It's always null for reference types and it's well defined for value types
-
-
-
-
- EventInfo.EventHandlerType getter is marked SecuritySafeCritical in CoreCLR
- This method is to get to the property without using Reflection
-
-
-
-
-
-
- Used by prologue code that is injected in lambdas to ensure that delegate signature matches what
- lambda body expects. Such code typically unwraps subset of the params array manually,
- but then passes the rest in bulk if lambda body also expects params array.
-
- This calls ArrayUtils.ShiftLeft, but performs additional checks that
- ArrayUtils.ShiftLeft assumes.
-
-
-
-
- Provides support for converting objects to delegates using the DLR binders
- available by the provided language context.
-
- Primarily this supports converting objects implementing IDynamicMetaObjectProvider
- to the appropriate delegate type.
-
- If the provided object is already a delegate of the appropriate type then the
- delegate will simply be returned.
-
-
-
- Table of dynamically generated delegates which are shared based upon method signature.
-
-
-
- Creates a delegate with a given signature that could be used to invoke this object from non-dynamic code (w/o code context).
- A stub is created that makes appropriate conversions/boxing and calls the object.
- The stub should be executed within a context of this object's language.
-
- The converted delegate.
- The object is either a subclass of Delegate but not the requested type or does not implement IDynamicMetaObjectProvider.
-
-
-
- The remote runtime server uses this class to publish an initialized ScriptEngine and ScriptRuntime
- over a remoting channel.
-
-
-
-
- Publish objects so that the host can use it, and then block indefinitely (until the input stream is open).
-
- Note that we should publish only one object, and then have other objects be accessible from it. Publishing
- multiple objects can cause problems if the client does a call like "remoteProxy1(remoteProxy2)" as remoting
- will not be able to know if the server object for both the proxies is on the same server.
-
- The IPC channel that the remote console expects to use to communicate with the ScriptEngine
- A intialized ScriptScope that is ready to start processing script commands
@@ -2375,6 +2648,227 @@
+
+
+ Create a stub for the target of the optimized lopop.
+
+
+
+
+
+ Gets expressions to access all the arguments. This includes the instance argument.
+
+
+
+
+ Provides a StreamContentProvider for a stream of content backed by a file on disk.
+
+
+
+
+ True if the MethodBase is method which is going to construct an object
+
+
+
+
+ Returns the System.Type for any object, including null. The type of null
+ is represented by None.Type and all other objects just return the
+ result of Object.GetType
+
+
+
+
+ Simply returns a Type[] from calling GetType on each element of args.
+
+
+
+
+ EMITTED
+ Used by default method binder to check types of splatted arguments.
+
+
+
+
+ Given a MethodInfo which may be declared on a non-public type this attempts to
+ return a MethodInfo which will dispatch to the original MethodInfo but is declared
+ on a public type.
+
+ Returns the original method if the method if a public version cannot be found.
+
+
+
+
+ Non-public types can have public members that we find when calling type.GetMember(...). This
+ filters out the non-visible members by attempting to resolve them to the correct visible type.
+
+ If no correct visible type can be found then the member is not visible and we won't call it.
+
+
+
+
+ Sees if two MemberInfos point to the same underlying construct in IL. This
+ ignores the ReflectedType property which exists on MemberInfos which
+ causes direct comparisons to be false even if they are the same member.
+
+
+
+
+ Given a MethodInfo which may be declared on a non-public type this attempts to
+ return a MethodInfo which will dispatch to the original MethodInfo but is declared
+ on a public type.
+
+ Throws InvalidOperationException if the method cannot be obtained.
+
+
+
+
+ Returns a value which indicates failure when a OldConvertToAction of ImplicitTry or
+ ExplicitTry.
+
+
+
+
+ Creates an interpreted delegate for the lambda.
+
+ The lambda to compile.
+ A delegate which can interpret the lambda.
+
+
+
+ Creates an interpreted delegate for the lambda.
+
+ The lambda to compile.
+ The number of iterations before the interpreter starts compiling
+ A delegate which can interpret the lambda.
+
+
+
+ Creates an interpreted delegate for the lambda.
+
+ The lambda's delegate type.
+ The lambda to compile.
+ A delegate which can interpret the lambda.
+
+
+
+ Creates an interpreted delegate for the lambda.
+
+ The lambda to compile.
+ The number of iterations before the interpreter starts compiling
+ A delegate which can interpret the lambda.
+
+
+
+ Compiles the lambda into a method definition.
+
+ the lambda to compile
+ A which will be used to hold the lambda's IL.
+ A parameter that indicates if debugging information should be emitted to a PDB symbol store.
+
+
+
+ Compiles the LambdaExpression.
+
+ If the lambda is compiled with emitDebugSymbols, it will be
+ generated into a TypeBuilder. Otherwise, this method is the same as
+ calling LambdaExpression.Compile()
+
+ This is a workaround for a CLR limitiation: DynamicMethods cannot
+ have debugging information.
+
+ the lambda to compile
+ true to generate a debuggable method, false otherwise
+ the compiled delegate
+
+
+
+ Compiles the LambdaExpression, emitting it into a new type, and
+ optionally making it debuggable.
+
+ This is a workaround for a CLR limitiation: DynamicMethods cannot
+ have debugging information.
+
+ the lambda to compile
+ Debugging information generator used by the compiler to mark sequence points and annotate local variables.
+ True if debug symbols (PDBs) are emitted by the .
+ the compiled delegate
+
+
+
+ Reduces the provided DynamicExpression into site.Target(site, *args).
+
+
+
+
+ Removes all live objects and places them in static fields of a type.
+
+
+
+
+ Dictionary[TKey, TValue] is not thread-safe in the face of concurrent reads and writes. SynchronizedDictionary
+ provides a thread-safe implementation. It holds onto a Dictionary[TKey, TValue] instead of inheriting from
+ it so that users who need to do manual synchronization can access the underlying Dictionary[TKey, TValue].
+
+
+
+
+ This returns the raw unsynchronized Dictionary[TKey, TValue]. Users are responsible for locking
+ on it before accessing it. Also, it should not be arbitrarily handed out to other code since deadlocks
+ can be caused if other code incorrectly locks on it.
+
+
+
+
+ Implementation of the complex number data type.
+
+
+
+
+
+
+
+ name == null means that the argument doesn't specify an option; the value contains the entire argument
+ name == "" means that the option name is empty (argument separator); the value is null then
+
+
+
+
+ Marks a method as not having side effects. used by the combo binder
+ to allow calls to methods.
+
+
+
+
+ A simple dictionary of queues, keyed off a particular type
+ This is useful for storing free lists of variables
+
+
+
+
+ When finding a yield return or yield break, this rewriter flattens out
+ containing blocks, scopes, and expressions with stack state. All
+ scopes encountered have their variables promoted to the generator's
+ closure, so they survive yields.
+
+
+
+
+ Makes an assignment to this variable. Pushes the assignment as far
+ into the right side as possible, to allow jumps into it.
+
+
+
+
+ Returns true if the expression remains constant no matter when it is evaluated.
+
+
+
+
+ A stack of variables that are defined in nested scopes. We search
+ this first when resolving a variable in case a nested scope shadows
+ one of our variable instances.
+
+
An object that implements IDispatch
@@ -2443,142 +2937,783 @@
dispid.
-
+
- This is a helper class for runtime-callable-wrappers of COM instances. We create one instance of this type
- for every generic RCW instance.
+ A custom member tracker which enables languages to plug in arbitrary
+ members into the lookup process.
-
+
- The runtime-callable wrapper
+ Simple class for tracking a list of items and enumerating over them.
+ The items are stored in weak references; if the objects are collected,
+ they will not be seen when enumerating.
+
+ The type of the collection element.
+
+
+
+ Provides fast strongly typed thread local storage. This is significantly faster than
+ Thread.GetData/SetData.
-
+
- This is the factory method to get the ComObject corresponding to an RCW
+ True if the caller will guarantee that all cleanup happens as the thread
+ unwinds.
+
+ This is typically used in a case where the thread local is surrounded by
+ a try/finally block. The try block pushes some state, the finally block
+ restores the previous state. Therefore when the thread exits the thread
+ local is back to it's original state. This allows the ThreadLocal object
+ to not check the current owning thread on retrieval.
+
+
+
+ Gets the current value if its not == null or calls the provided function
+ to create a new value.
+
+
+
+
+ Calls the provided update function with the current value and
+ replaces the current value with the result of the function.
+
+
+
+
+ Replaces the current value with a new one and returns the old value.
+
+
+
+
+ Gets the StorageInfo for the current thread.
+
+
+
+
+ Called when the fast path storage lookup fails. if we encountered the Empty storage
+ during the initial fast check then spin until we hit non-empty storage and try the fast
+ path again.
+
+
+
+
+ Creates the StorageInfo for the thread when one isn't already present.
+
+
+
+
+ Gets or sets the value for the current thread.
+
+
+
+
+ Helper class for storing the value. We need to track if a ManagedThreadId
+ has been re-used so we also store the thread which owns the value.
+
+
+
+
+ Helper methods that calls are generated to from the default DLR binders.
+
+
+
+
+ Helper function to combine an object array with a sequence of additional parameters that has been splatted for a function call.
+
+
+
+
+ EventInfo.EventHandlerType getter is marked SecuritySafeCritical in CoreCLR
+ This method is to get to the property without using Reflection
+
+
-
+
+
+ Returns Microsoft.Scripting.Runtime.DynamicNull if the object contains a null value,
+ otherwise, returns self.LimitType
+
+
+
+
+ Returns Microsoft.Scripting.Runtime.DynamicNull if the object contains a null value,
+ otherwise, returns self.RuntimeType
+
+
+
- Provides helper methods to bind COM objects dynamically.
+ The remote runtime server uses this class to publish an initialized ScriptEngine and ScriptRuntime
+ over a remoting channel.
-
+
- Determines if an object is a COM object.
+ Publish objects so that the host can use it, and then block indefinitely (until the input stream is open).
+
+ Note that we should publish only one object, and then have other objects be accessible from it. Publishing
+ multiple objects can cause problems if the client does a call like "remoteProxy1(remoteProxy2)" as remoting
+ will not be able to know if the server object for both the proxies is on the same server.
- The object to test.
- true if the object is a COM object, false otherwise.
+ The IPC channel that the remote console expects to use to communicate with the ScriptEngine
+ A intialized ScriptScope that is ready to start processing script commands
-
+
- Tries to perform binding of the dynamic get member operation.
+ Provides the implementation of performing AddAssign and SubtractAssign binary operations.
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- The new representing the result of the binding.
- true if member evaluation may be delayed.
- true if operation was bound successfully; otherwise, false.
+ The binder provided by the call site.
+ The handler for the operation.
+ The result of the operation.
+ true if the operation is complete, false if the call site should determine behavior.
-
+
- Tries to perform binding of the dynamic get member operation.
+ Adds a handler to an event.
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
+ The handler to be added.
+ The original event with handler added.
-
+
- Tries to perform binding of the dynamic set member operation.
+ Removes handler from the event.
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- The representing the value for the set member operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
+ The handler to be removed.
+ The original event with handler removed.
-
+
- Tries to perform binding of the dynamic invoke operation.
-
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- An array of instances - arguments to the invoke member operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
-
-
-
- Tries to perform binding of the dynamic invoke member operation.
+ ParameterWrapper represents the logical view of a parameter. For eg. the byref-reduced signature
+ of a method with byref parameters will be represented using a ParameterWrapper of the underlying
+ element type, since the logical view of the byref-reduced signature is that the argument will be
+ passed by value (and the updated value is included in the return value).
+
+ Contrast this with ArgBuilder which represents the real physical argument passed to the method.
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- An array of instances - arguments to the invoke member operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
-
+
- Tries to perform binding of the dynamic get index operation.
+ ParameterInfo is not available.
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- An array of instances - arguments to the invoke member operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
-
+
- Tries to perform binding of the dynamic set index operation.
+ Creates a parameter that represents an expanded item of params-array.
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- An array of instances - arguments to the invoke member operation.
- The representing the value for the set index operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
-
+
- Tries to perform binding of the dynamic Convert operation.
+ True if the wrapper represents a params-array parameter (false for parameters created by expansion of a params-array).
- An instance of the that represents the details of the dynamic operation.
- The target of the dynamic operation.
- The new representing the result of the binding.
- true if operation was bound successfully; otherwise, false.
-
+
- Gets the member names associated with the object.
- This function can operate only with objects for which returns true.
+ True if the wrapper represents a params-dict parameter (false for parameters created by expansion of a params-dict).
- The object for which member names are requested.
- The collection of member names.
-
+
- Gets the member names of the data-like members associated with the object.
- This function can operate only with objects for which returns true.
+ Defines a method overload abstraction for the purpose of overload resolution.
+ It provides the overload resolver the metadata it needs to perform the resolution.
- The object for which member names are requested.
- The collection of member names.
+
+ WARNING: This is a temporary API that will undergo breaking changes in future versions.
+
-
+
- Gets the data-like members and associated data for an object.
- This function can operate only with objects for which returns true.
+ Null for constructors.
- The object for which data members are requested.
- The enumeration of names of data members for which to retrieve values.
- The collection of pairs that represent data member's names and their data.
-
+
- Special binder that indicates special semantics for COM GetMember operation.
+ The method arity can vary, i.e. the method has params array or params dict parameters.
+
+
+
+
+ Represents a method overload that is bound to a .
+
+
+ Not thread safe.
+ WARNING: This is a temporary API that will undergo breaking changes in future versions.
+
+
+
+
+ Narrowing conversions are conversions that cannot be proved to always succeed, conversions that are
+ known to possibly lose information, and conversions across domains of types sufficiently different
+ to merit narrowing notation like casts.
+
+ Its upto every language to define the levels for conversions. The narrowling levels can be used by
+ for method overload resolution, where the overload is based on the parameter types (and not the number
+ of parameters).
+
+
+
+
+ Conversions at this level do not do any narrowing. Typically, this will include
+ implicit numeric conversions, Type.IsAssignableFrom, StringBuilder to string, etc.
+
+
+
+
+ Language defined prefered narrowing conversion. First level that introduces narrowing
+ conversions.
+
+
+
+
+ Language defined preferred narrowing conversion. Second level that introduces narrowing
+ conversions and should have more conversions than One.
+
+
+
+
+ Language defined preferred narrowing conversion. Third level that introduces narrowing
+ conversions and should have more conversions that Two.
+
+
+
+
+ A somewhat meaningful conversion is possible, but it will quite likely be lossy.
+ For eg. BigInteger to an Int32, Boolean to Int32, one-char string to a char,
+ larger number type to a smaller numeric type (where there is no overflow), etc
+
+
+
+
+ Binds named arguments to the parameters. Returns a permutation of indices that captures the relationship between
+ named arguments and their corresponding parameters. Checks for duplicate and unbound named arguments.
+
+ Ensures that for all i: namedArgs[i] binds to parameters[args.Length + bindingPermutation[i]]
+
+
+
+
+ The number of arguments not counting the collapsed ones.
+
+
+
+
+ Gets the total number of visible arguments passed to the call site including collapsed ones.
+
+
+
+
+ NamespaceTracker represent a CLS namespace.
+
+
+
+
+ Provides a list of all the members of an instance.
+
+
+
+
+ Loads all the types from all assemblies that contribute to the current namespace (but not child namespaces)
+
+
+
+
+ Populates the tree with nodes for each part of the namespace
+
+
+ Full namespace name. It can be null (for top-level types)
+
+
+
+
+ As a fallback, so if the type does exist in any assembly. This would happen if a new type was added
+ that was not in the hardcoded list of types.
+ This code is not accurate because:
+ 1. We dont deal with generic types (TypeCollision).
+ 2. Previous calls to GetCustomMemberNames (eg. "from foo import *" in Python) would not have included this type.
+ 3. This does not deal with new namespaces added to the assembly
+
+
+
+
+ This stores all the public non-nested type names in a single namespace and from a single assembly.
+ This allows inspection of the namespace without eagerly loading all the types. Eagerly loading
+ types slows down startup, increases working set, and is semantically incorrect as it can trigger
+ TypeLoadExceptions sooner than required.
+
+
+
+
+ TODO: Alternatively, it should be sufficient to remember indices for this, list, dict and block.
+
+
+
+
+ Handles input and output for the console. It is comparable to System.IO.TextReader,
+ System.IO.TextWriter, System.Console, etc
+
+
+
+
+ Read a single line of interactive input, or a block of multi-line statements.
+
+ An event-driven GUI console can implement this method by creating a thread that
+ blocks and waits for an event indicating that input is available
+
+ The indentation level to be used for the current suite of a compound statement.
+ The console can ignore this argument if it does not want to support auto-indentation
+ null if the input stream has been closed. A string with a command to execute otherwise.
+ It can be a multi-line string which should be processed as block of statements
+
+
+
+
+ Represents a SymbolId constant
+ This node is reducible, and also rewritten by GlobalOptimizedRewriter
+
+ TODO: this node exists so GlobalOptimizedRewriter can recognize and
+ rewrite a strongly typed node. Once that functionality is gone it
+ should go away.
+ When this type goes away, change the return type of
+ Microsoft.Scripting.Ast.Utils.Constant(object) from Expression to ConstantExpression.
+
+
+
+
+ Represents the type of a null value.
+
+
+
+
+ Private constructor is never called since 'null' is the only valid instance.
+
+
+
+
+ arbitrary precision integers
+
+
+
+
+ Create a BigInteger from a little-endian twos-complement byte array
+ (inverse of ToByteArray())
+
+
+
+
+ Return the magnitude of this BigInteger as an array of zero or more uints.
+ Element zero is the value of the least significant four bytes, element one is
+ the value of the four next most significant bytes, etc.
+
+ The returned data is the unsigned magnitude of the number. To determine the sign,
+ use GetSign().
+
+ It is guaranteed that the highest element of the returned array is never zero.
+ This means that if the value of this BigInteger is zero, a zero-length array
+ is returned.
+
+
+
+
+ Do an in-place twos complement of d and also return the result.
+
+
+
+
+ Calculates the natural logarithm of the BigInteger.
+
+
+
+
+ Calculates log base 10 of a BigInteger.
+
+
+
+
+ Return the value of this BigInteger as a little-endian twos-complement
+ byte array, using the fewest number of bytes possible. If the value is zero,
+ return an array of one byte whose element is 0x00.
+
+
+
+
+ Return the sign of this BigInteger: -1, 0, or 1.
+
+
+
+
+ We don't need to insert code to track lines in adaptive mode as the
+ interpreter does that for us. TODO: improve the adaptive compiler so we
+ don't need to do this, and can just remove line tracking from languages
+
+
+
+
+ Gets the generic arguments for method based upon the constraints discovered during
+ type inference. Returns null if not all generic arguments had their types inferred.
+
+
+
+
+ Creates a new set of arg builders for the given generic method definition which target the new
+ parameters.
+
+
+
+
+ Creates a new list of ParameterWrappers for the generic method replacing the old parameters with the new ones.
+
+
+
+
+ Gets the generic type arguments sorted so that the type arguments
+ that are depended upon by other type arguments are sorted before
+ their dependencies.
+
+
+
+
+ Checks to see if the x type parameter is dependent upon the y type parameter.
+
+
+
+
+ Builds a mapping based upon generic parameter constraints between related generic
+ parameters. This is then used to sort the generic parameters so that we can process
+ the least dependent parameters first. For example given the method:
+
+ void Foo{T0, T1}(T0 x, T1 y) where T0 : T1
+
+ We need to first infer the type information for T1 before we infer the type information
+ for T0 so that we can ensure the constraints are correct.
+
+
+
+
+ Returns a mapping from generic type parameter to the input DMOs which map to it.
+
+
+
+
+ Adds any additional ArgumentInputs entries for the given object and parameter type.
+
+
+
+
+ Walks the nested generic hierarchy to construct all of the generic parameters referred
+ to by this type. For example if getting the generic parameters for the x parameter on
+ the method:
+
+ void Foo{T0, T1}(Dictionary{T0, T1} x);
+
+ We would add both typeof(T0) and typeof(T1) to the list of generic arguments.
+
+
+
+
+ Maps a single type parameter to the possible parameters and DynamicMetaObjects
+ we can get inference from. For example for the signature:
+
+ void Foo{T0, T1}(T0 x, T1 y, IList{T1} z);
+
+ We would have one ArgumentInput for T0 which holds onto the DMO providing the argument
+ value for x. We would also have one ArgumentInput for T1 which holds onto the 2 DMOs
+ for y and z. Associated with y would be a GenericParameterInferer and associated with
+ z would be a ConstructedParameterInferer.
+
+
+
+
+ Provides generic type inference for a single parameter.
+
+
+
+
+ Checks if the constraints are violated by the given input for the specified generic method parameter.
+
+ This method must be supplied with a mapping for any dependent generic method type parameters which
+ this one can be constrained to. For example for the signature "void Foo{T0, T1}(T0 x, T1 y) where T0 : T1".
+ we cannot know if the constraints are violated unless we know what we have calculated T1 to be.
+
+
+
+
+ The parameter type which inference is happening for. This is the actual parameter type
+ and not the generic parameter. For example it could be IList{T} or T.
+
+
+
+
+ Provides type inference for a parameter which is typed to be a method type parameter.
+
+ For example: M{T}(T x)
+
+
+
+
+ Provides type inference for a parameter which is constructed from a method type parameter.
+
+ For example:
+ M{T}(IList{T} x)
+ M{T}(ref T x)
+ M{T}(T[] x)
+ M{T}(ref Dictionary{T,T}[] x)
+
+
+
+
+ Constructs a new parameter inferer for the given parameter type which should
+ contain generic parameters but not it's self be a generic parameter.
+
+
+
+
+
+ Finds all occurences of genericParameter in openType and the corresponding concrete types in closedType.
+ Returns true iff all occurences of the generic parameter in the open type correspond to the same concrete type in the closed type
+ and this type satisfies given constraints. Returns the concrete type in match if so.
+
+
+
+
+ Implemented by DynamicMetaObject subclasses when the associated object
+ can participate in generic method type inference. This interface
+ is used when the inference engine is attempting to perform type inference
+ for a parameter which is typed to a delegate type.
+
+
+
+
+ Returns the type inferred for parameterType when performing
+ inference for a conversion to delegateType.
+
+
+
+
+ Provides information about the result of a custom object which dynamically
+ infers back types.
+
+ Currently only used for invokable objects to feedback the types for a delegate
+ type.
+
+
+
+
+ Defines methods to support the comparison of objects for structural equality.
+
+
+
+
+ Determines whether an object is equal to the current instance.
+
+ The object to compare with the current instance.
+ An object that determines whether the current instance and other are equal.
+ true if the two objects are equal; otherwise, false.
+
+
+
+ Returns a hash code for the current instance.
+
+ An object that computes the hash code of the current object.
+ The hash code for the current instance.
+
+
+
+ Supports the structural comparison of collection objects.
+
+
+
+
+ Determines whether the current collection object precedes, occurs in the
+ same position as, or follows another object in the sort order.
+
+ The object to compare with the current instance.
+ An object that compares the current object and other.
+
+ An integer that indicates the relationship of the current collection object
+ to other, as shown in the following table.
+ Return value Description
+ -1 The current instance precedes other.
+ 0 The current instance and other are equal.
+ 1 The current instance follows other.
+
+
+
+
+ Similar to Dictionary[TKey,TValue], but it also ensures that the keys will not be kept alive
+ if the only reference is from this collection. The value will be kept alive as long as the key
+ is alive.
+
+ This currently has a limitation that the caller is responsible for ensuring that an object used as
+ a key is not also used as a value in *any* instance of a WeakHash. Otherwise, it will result in the
+ object being kept alive forever. This effectively means that the owner of the WeakHash should be the
+ only one who has access to the object used as a value.
+
+ Currently, there is also no guarantee of how long the values will be kept alive even after the keys
+ get collected. This could be fixed by triggerring CheckCleanup() to be called on every garbage-collection
+ by having a dummy watch-dog object with a finalizer which calls CheckCleanup().
+
+
+
+
+ Check if any of the keys have gotten collected
+
+ Currently, there is also no guarantee of how long the values will be kept alive even after the keys
+ get collected. This could be fixed by triggerring CheckCleanup() to be called on every garbage-collection
+ by having a dummy watch-dog object with a finalizer which calls CheckCleanup().
+
+
+
+
+ Represents an array that has value equality.
+
+
+
+
+ Wraps the provided enumerable into a ReadOnlyCollection{T}
+
+ Copies all of the data into a new array, so the data can't be
+ changed after creation. The exception is if the enumerable is
+ already a ReadOnlyCollection{T}, in which case we just return it.
+
+
+
+
+ Indicates that a MetaObject is already representing a restricted type. Useful
+ when we're already restricted to a known type but this isn't captured in
+ the type info (e.g. the type is not sealed).
+
+
+
+
+ Tests to see if the expression is a constant with the given value.
+
+ The expression to examine
+ The constant value to check for.
+ true/false
+
+
+
+ Tests to see if the expression is a constant with the given value.
+
+ The expression to examine
+ The constant value to check for.
+ true/false
+
+
+
+ Provides support for converting objects to delegates using the DLR binders
+ available by the provided language context.
+
+ Primarily this supports converting objects implementing IDynamicMetaObjectProvider
+ to the appropriate delegate type.
+
+ If the provided object is already a delegate of the appropriate type then the
+ delegate will simply be returned.
+
+
+
+ Table of dynamically generated delegates which are shared based upon method signature.
+
+
+
+ Creates a delegate with a given signature that could be used to invoke this object from non-dynamic code (w/o code context).
+ A stub is created that makes appropriate conversions/boxing and calls the object.
+ The stub should be executed within a context of this object's language.
+
+ The converted delegate.
+ The object is either a subclass of Delegate but not the requested type or does not implement IDynamicMetaObjectProvider.
+
+
+
+ A simple forth-style stack machine for executing Expression trees
+ without the need to compile to IL and then invoke the JIT. This trades
+ off much faster compilation time for a slower execution performance.
+ For code that is only run a small number of times this can be a
+ sweet spot.
+
+ The core loop in the interpreter is the RunInstructions method.
+
+
+
+
+ Runs instructions within the given frame.
+
+
+ Interpreted stack frames are linked via Parent reference so that each CLR frame of this method corresponds
+ to an interpreted stack frame in the chain. It is therefore possible to combine CLR stack traces with
+ interpreted stack traces by aligning interpreted frames to the frames of this method.
+ Each group of subsequent frames of Run method corresponds to a single interpreted frame.
+
+
+
+
+ ConsoleHost where the ScriptRuntime is hosted in a separate process (referred to as the remote runtime server)
+
+ The RemoteConsoleHost spawns the remote runtime server and specifies an IPC channel name to use to communicate
+ with each other. The remote runtime server creates and initializes a ScriptRuntime and a ScriptEngine, and publishes
+ it over the specified IPC channel at a well-known URI. Note that the RemoteConsoleHost cannot easily participate
+ in the initialization of the ScriptEngine as classes like LanguageContext are not remotable.
+
+ The RemoteConsoleHost then starts the interactive loop and executes commands on the ScriptEngine over the remoting channel.
+ The RemoteConsoleHost listens to stdout of the remote runtime server and echos it locally to the user.
+
+
+
+
+ Core functionality to implement an interactive console. This should be derived for concrete implementations
+
+
+
+
+ Request (from another thread) the console REPL loop to terminate
+
+ The caller can specify the exitCode corresponding to the event triggering
+ the termination. This will be returned from CommandLine.Run
+
+
+
+ To be called from entry point.
+
+
+
+
+ Console Host entry-point .exe name.
+
+
+
+
+ Allows the console to customize the environment variables, working directory, etc.
+
+ At the least, processInfo.FileName should be initialized
+
+
+
+ Aborts the current active call to Execute by doing Thread.Abort
+
+ true if a Thread.Abort was actually called. false if there is no active call to Execute
+
+
+
+ Called if the remote runtime process exits by itself. ie. without the remote console killing it.
+
+
+
+
+ Layout of the IDispatch vtable
+
+
+
+
+ Wrapping a tree in this node enables jumps from finally blocks
+ It does this by generating control-flow logic in the tree
+
+ Reducing this node requires a full tree walk of its body
+ (but not nested lambdas)
+
+ WARNING: this node cannot contain jumps across blocks, because it
+ assumes any unknown jumps are jumps to an outer scope.
@@ -2586,25 +3721,87 @@
Splits text and optionally indents first lines - breaks along words, not characters.
-
+
- Presents a flat enumerable view of multiple dictionaries
+ Requires the specified index to point inside the array.
+
+ Array is null.
+ Index is outside the array.
+
+
+
+ Requires the specified index to point inside the array.
+
+ Index is outside the array.
+
+
+
+ Requires the specified index to point inside the array or at the end
+
+ Array is null.
+ Index is outside the array.
+
+
+
+ Requires the specified index to point inside the array or at the end
+
+ Array is null.
+ Index is outside the array.
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Offset or count are out of range.
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Offset or count are out of range.
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Array is null.
+ Offset or count are out of range.
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ String is null.
+ Offset or count are out of range.
+
+
+
+ Requires the array and all its items to be non-null.
-
+
- Not all .NET enumerators throw exceptions if accessed in an invalid state. This type
- can be used to throw exceptions from enumerators implemented in IronPython.
+ Requires the enumerable collection and all its items to be non-null.
-
+
- Represents an ops-extension method which is used to implement a property.
+ Provides a cache of reflection members. Only one set of values is ever handed out per a
+ specific request.
-
+
- The delegate representing the DLR Main function
+ Gets a singleton method group from the provided type.
+
+ The provided method group will be unique based upon the methods defined, not based upon the type/name
+ combination. In other words calling GetMethodGroup on a base type and a derived type that introduces
+ no new methods under a given name will result in the same method group for both types.
+
+
+
+
+ TODO: Make me private again
@@ -2624,6 +3821,11 @@
information to get the generic version.
+
+
+ Enables implicit Type to TypeTracker conversions accross dynamic languages.
+
+
The merged list so far. Could be null
The new type(s) to add to the merged list
@@ -2669,507 +3871,70 @@
exposed through any public APIs.
-
-
- A tree rewriter which will find dynamic sites which consume dynamic sites and
- turn them into a single combo dynamic site. The combo dynamic site will then run the
- individual meta binders and produce the resulting code in a single dynamic site.
-
-
-
-
- A reducible node which we use to generate the combo dynamic sites. Each time we encounter
- a dynamic site we replace it with a ComboDynamicSiteExpression. When a child of a dynamic site
- turns out to be a ComboDynamicSiteExpression we will then merge the child with the parent updating
- the binding mapping info. If any of the inputs cause side effects then we'll stop the combination.
-
-
-
-
- A parameterless generator, that is of type IEnumerable, IEnumerable{T},
- IEnumerator, or IEnumerator{T}. Its body can contain a series of
- YieldExpressions. Each call into MoveNext on the enumerator reenters
- the generator, and executes until it reaches a YieldReturn or YieldBreak
- expression
-
-
-
-
- The label used by YieldBreak and YieldReturn expressions to yield
- from this generator
-
-
-
-
- The body of the generator, which can contain YieldBreak and
- YieldReturn expressions
-
-
-
-
- Manages creation of interpreted delegates. These delegates will get
- compiled if they are executed often enough.
-
-
-
-
- Used by LightLambda to get the compiled delegate.
-
-
-
-
- Create a compiled delegate for the LightLambda, and saves it so
- future calls to Run will execute the compiled code instead of
- interpreting.
-
-
-
-
- Updates the execution count of this light delegate. If a certain
- threshold is reached, it will start a background compilation.
-
-
-
-
- true if the compiled delegate has the same type as the lambda;
- false if the type was changed for interpretation.
-
-
-
-
- Supports detecting the remote runtime being killed, and starting up a new one.
-
- Threading model:
-
- ConsoleRestartManager creates a separate thread on which to create and execute the consoles.
- There are usually atleast three threads involved:
-
- 1. Main app thread: Instantiates ConsoleRestartManager and accesses its APIs. This thread has to stay
- responsive to user input and so the ConsoleRestartManager APIs cannot be long-running or blocking.
- Since the remote runtime process can terminate asynchronously, the current RemoteConsoleHost can
- change at any time (if auto-restart is enabled). The app should typically not care which instance of
- RemoteConsoleHost is currently being used. The flowchart of this thread is:
- Create ConsoleRestartManager
- ConsoleRestartManager.Start
- Loop:
- Respond to user input | Send user input to console for execution | BreakExecution | RestartConsole | GetMemberNames
- ConsoleRestartManager.Terminate
- TODO: Currently, BreakExecution and GetMemberNames are called by the main thread synchronously.
- Since they execute code in the remote runtime, they could take arbitrarily long. We should change
- this so that the main app thread can never be blocked indefinitely.
-
- 2. Console thread: Dedicated thread for creating RemoteConsoleHosts and executing code (which could
- take a long time or block indefinitely).
- Wait for ConsoleRestartManager.Start to be called
- Loop:
- Create RemoteConsoleHost
- Wait for signal for:
- Execute code | RestartConsole | Process.Exited
-
- 3. CompletionPort async callbacks:
- Process.Exited | Process.OutputDataReceived | Process.ErrorDataReceived
-
- 4. Finalizer thred
- Some objects may have a Finalize method (which possibly calls Dispose). Not many (if any) types
- should have a Finalize method.
-
-
-
-
-
- Accessing _remoteConsoleHost from a thread other than console thread can result in race.
- If _remoteConsoleHost is accessed while holding _accessLock, it is guaranteed to be
- null or non-disposed.
-
-
-
-
- This is created on the "creating thread", and goes on standby. Start needs to be called for activation.
-
- A host might want one of two behaviors:
- 1. Keep the REPL loop alive indefinitely, even when a specific instance of the RemoteConsoleHost terminates normally
- 2. Close the REPL loop when an instance of the RemoteConsoleHost terminates normally, and restart the loop
- only if the instance terminates abnormally.
-
-
-
- Needs to be called for activation.
-
-
-
-
- Request (from another thread) the console REPL loop to terminate
-
-
-
-
- VariantBuilder handles packaging of arguments into a Variant for a call to IDispatch.Invoke
-
-
-
-
- This is similar to ComTypes.EXCEPINFO, but lets us do our own custom marshaling
-
-
-
-
- Invokes the object. If it falls back, just produce an error.
-
-
-
-
- Splats the arguments to another nested dynamic site, which does the
- real invocation of the IDynamicMetaObjectProvider.
-
-
-
-
- Builds the argument for an out argument when not passed a StrongBox. The out parameter
- is returned as an additional return value.
-
-
-
-
- ArgBuilder which provides a default parameter value for a method call.
-
-
-
-
- Creates a ReturnBuilder
-
- the type the ReturnBuilder will leave on the stack
-
-
-
- Binds named arguments to the parameters. Returns a permutation of indices that captures the relationship between
- named arguments and their corresponding parameters. Checks for duplicate and unbound named arguments.
-
- Ensures that for all i: namedArgs[i] binds to parameters[args.Length + bindingPermutation[i]]
-
-
-
-
- The number of arguments not counting the collapsed ones.
-
-
-
-
- Gets the total number of visible arguments passed to the call site including collapsed ones.
-
-
-
-
- DLR requires any Hosting API provider to implement this class and provide its instance upon Runtime initialization.
- DLR calls on it to perform basic host/system dependent operations.
-
-
-
-
- Abstracts system operations that are used by DLR and could potentially be platform specific.
-
-
-
-
- MemberGroups are a collection of MemberTrackers which are commonly produced
- on-demand to talk about the available members. They can consist of a mix of
- different member types or multiple membes of the same type.
-
- The most common source of MemberGroups is from ActionBinder.GetMember. From here
- the DLR will perform binding to the MemberTrackers frequently producing the value
- resulted from the user. If the result of the action produces a member it's self
- the ActionBinder can provide the value exposed to the user via ReturnMemberTracker.
-
- ActionBinder provides default functionality for both getting members from a type
- as well as exposing the members to the user. Getting members from the type maps
- closely to reflection and exposing them to the user exposes the MemberTrackers
- directly.
-
-
-
-
- Indicates that a MetaObject is already representing a restricted type. Useful
- when we're already restricted to a known type but this isn't captured in
- the type info (e.g. the type is not sealed).
-
-
-
-
- Indicates that a DynamicMetaObject might be convertible to a CLR type.
-
-
-
-
- Customize the CommandLine for remote scenarios
-
-
-
-
- CommandDispatcher to ensure synchronize output from the remote runtime
-
-
-
-
- ComEventSinksContainer is just a regular list with a finalizer.
- This list is usually attached as a custom data for RCW object and
- is finalized whenever RCW is finalized.
-
-
-
-
- True if there are restrictions beyond just simple type restrictions
-
-
-
-
- Indicates an extension method should be added as a static method, not a instance method.
-
-
-
-
- Enables an object to be serializable to an Expression tree. The expression tree can then
- be emitted into an assembly enabling the de-serialization of the object.
-
-
-
-
- Convention for an individual argument at a callsite.
-
- Multiple different callsites can match against a single declaration.
- Some argument kinds can be "unrolled" into multiple arguments, such as list and dictionary.
-
-
-
-
- Simple unnamed positional argument.
- In Python: foo(1,2,3) are all simple arguments.
-
-
-
-
- Argument with associated name at the callsite
- In Python: foo(a=1)
-
-
-
-
- Argument containing a list of arguments.
- In Python: foo(*(1,2*2,3)) would match 'def foo(a,b,c)' with 3 declared arguments such that (a,b,c)=(1,4,3).
- it could also match 'def foo(*l)' with 1 declared argument such that l=(1,4,3)
-
-
-
-
- Argument containing a dictionary of named arguments.
- In Python: foo(**{'a':1, 'b':2})
-
-
-
- On error.
-
-
-
- marks a field, class, or struct as being safe to have statics which can be accessed
- from multiple runtimes.
-
- Static fields which are not read-only or marked with this attribute will be flagged
- by a test which looks for state being shared between runtimes. Before applying this
- attribute you should ensure that it is safe to share the state. This is typically
- state which is lazy initialized or state which is caching values which are identical
- in all runtimes and are immutable.
-
-
-
-
- Tests to see if the expression is a constant with the given value.
-
- The expression to examine
- The constant value to check for.
- true/false
-
-
-
- Tests to see if the expression is a constant with the given value.
-
- The expression to examine
- The constant value to check for.
- true/false
-
-
-
- Default value, their was no CallFailure.
-
-
-
-
- One of more parameters failed to be converted
-
-
-
-
- One or more keyword arguments could not be successfully assigned to a positional argument
-
-
-
-
- One or more keyword arguments were duplicated or would have taken the spot of a
- provided positional argument.
-
-
-
-
- Type arguments could not be inferred
-
-
-
-
- Allows wrapping of proxy types (like COM RCWs) to expose their IEnumerable functionality
- which is supported after casting to IEnumerable, even though Reflection will not indicate
- IEnumerable as a supported interface
-
-
-
-
- Returns a numerical code of the size of a type. All types get both a horizontal
- and vertical code. Types that are lower in both dimensions have implicit conversions
- to types that are higher in both dimensions.
-
-
-
-
- Thread safe dictionary that allows lazy-creation where readers will block for
- the creation of the lazily created value. Call GetOrCreateValue w/ a key
- and a callback function. If the value exists it is returned, if not the create
- callback is called (w/o any locks held). The create call back will only be called
- once for each key.
-
-
-
-
- Helper class which stores the published value
-
-
Creates a dictionary of locals in this scope
-
+
- Used as the value for the ScriptingRuntimeHelpers.GetDelegate method caching system
+ OperatorInfo provides a mapping from DLR ExpressionType to their associated .NET methods.
-
+
- Generates stub to receive the CLR call and then call the dynamic language code.
+ Given an operator returns the OperatorInfo associated with the operator or null
-
+
- Helper class to remove methods w/ identical signatures. Used for GetDefaultMembers
- which returns members from all types in the hierarchy.
+ The operator the OperatorInfo provides info for.
-
+
- Builds up a series of conditionals when the False clause isn't yet known. We can
- keep appending conditions and if true's. Each subsequent true branch becomes the
- false branch of the previous condition and body. Finally a non-conditional terminating
- branch must be added.
+ The primary method name associated with the method. This method name is
+ usally in the form of op_Operator (e.g. op_Addition).
-
+
- Adds a new conditional and body. The first call this becomes the top-level
- conditional, subsequent calls will have it added as false statement of the
- previous conditional.
+ The secondary method name associated with the method. This method name is
+ usually a standard .NET method name with pascal casing (e.g. Add).
-
+
- Adds the non-conditional terminating node.
+ This represents a bound dispmember on a IDispatch object.
-
+
- Gets the resulting meta object for the full body. FinishCondition
- must have been called.
+ Returns true if the method should not be displayed in the stack frame.
-
+
- Adds a variable which will be scoped at the level of the final expression.
+ ArgBuilder which provides a value for a keyword argument.
+
+ The KeywordArgBuilder calculates its position at emit time using it's initial
+ offset within the keyword arguments, the number of keyword arguments, and the
+ total number of arguments provided by the user. It then delegates to an
+ underlying ArgBuilder which only receives the single correct argument.
+
+ Delaying the calculation of the position to emit time allows the method binding to be
+ done without knowing the exact the number of arguments provided by the user. Hence,
+ the method binder can be dependent only on the set of method overloads and keyword names,
+ but not the user arguments. While the number of user arguments could be determined
+ upfront, the current MethodBinder does not have this design.
-
+
- Cached information from a TLB. Only information that is required is saved. CoClasses are used
- for event hookup. Enums are stored for accessing symbolic names from scripts.
-
-
-
-
- Reads the latest registered type library for the corresponding GUID,
- reads definitions of CoClass'es and Enum's from this library
- and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses
- and get actual values for the enums.
-
- Type Library Guid
- ComTypeLibDesc object
-
-
-
- Gets an ITypeLib object from OLE Automation compatible RCW ,
- reads definitions of CoClass'es and Enum's from this library
- and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses
- and get actual values for the enums.
-
- OLE automation compatible RCW
- ComTypeLibDesc object
-
-
-
- Create a stub for the target of the optimized lopop.
-
-
-
-
-
- Gets expressions to access all the arguments. This includes the instance argument.
-
-
-
-
- Interceptor prototype. The interceptor is a call site binder that wraps
- a real call site binder and can perform arbitrary operations on the expression
- trees that the wrapped binder produces:
- * Dumping the trees
- * Additional rewriting
- * Static compilation
- * ...
-
-
-
-
- An argument that the user wants to explicitly pass by-reference (with copy-in copy-out semantics).
- The user passes a StrongBox[T] object whose value will get updated when the call returns.
-
-
-
-
- SimpleArgBuilder produces the value produced by the user as the argument value. It
- also tracks information about the original parameter and is used to create extended
- methods for params arrays and param dictionary functions.
-
-
-
-
- Parameter info is not available for this argument.
-
-
-
-
- Type and whether the parameter is a params-array or params-dictionary is derived from info.
+ The underlying builder should expect a single parameter as KeywordArgBuilder is responsible
+ for calculating the correct parameter to use
+
@@ -3222,10 +3987,10 @@
of the particular overload.
-
+
- Checks to see if the language allows keyword arguments to be bound to instance fields or
- properties and turned into sets. By default this is only allowed on contructors.
+ Checks to see if the language allows named arguments to be bound to instance fields or
+ properties and turned into setters. By default this is only allowed on contructors.
@@ -3235,8 +4000,7 @@
- Always expand params array/dictionary parameters to simple parameters.
- Do not allow an array/dictionary to be passed to params array/dictionary.
+ Allow to bind an array/dictionary instance or a null reference to params array/dictionary parameter.
@@ -3273,47 +4037,6 @@
The method is called each time an item of lazily splatted argument is needed.
-
-
- Represents a collection of MethodCandidate's which all accept the
- same number of logical parameters. For example a params method
- and a method with 3 parameters would both be a CandidateSet for 3 parameters.
-
-
-
-
- Seeks the first character of a specified line in the text stream.
-
- The reader.
- Line number. The current position is assumed to be line #1.
-
- Returns true if the line is found, false otherwise.
-
-
-
-
- Reads characters to a string until end position or a terminator is reached.
- Doesn't include the terminator into the resulting string.
- Returns null, if the reader is at the end position.
-
-
-
-
- Reads characters until end position or a terminator is reached.
- Returns true if the character has been found (the reader is positioned right behind the character),
- false otherwise.
-
-
-
-
- These are some generally useful helper methods for handling exceptions.
-
-
-
-
- Keeps track of exceptions being handled in interpreted mode (so we can support rethrow statements).
-
-
Updates an exception before it's getting re-thrown so
@@ -3325,335 +4048,497 @@
Returns all the stack traces associates with an exception
-
+
- Walks all stack frames, filtering out DLR frames
- Does not walk the frames in the InnerException, if any
- Frames are returned in CLR order (inner to outer)
+ Gets the stub list for a COM Object. For COM objects we store the stub list
+ directly on the object using the Marshal APIs. This allows us to not have
+ any circular references to deal with via weak references which are challenging
+ in the face of COM.
-
+
- Walks all stack frames, filtering out DLR frames
- Does not walk the frames in the InnerException, if any
- Frames are returned in CLR order (inner to outer), unless reverse is set
+ Doesn't need to check PrivateBinding setting: no method that is part of the event is public the entire event is private.
+ If the code has already a reference to the event tracker instance for a private event its "static-ness" is not influenced
+ by private-binding setting.
-
+
- Gets the list of exceptions that are currently being handled by the user.
+ Holds on a list of delegates hooked to the event.
+ We need the list because we cannot enumerate the delegates hooked to CLR event and we need to do so in
+ handler removal (we need to do custom delegate comparison there). If BCL enables the enumeration we could remove this.
+
+
+
+
+ Storage for the handlers - a key value pair of the callable object and the delegate handler.
+
+
+
+
+ Storage for the handlers - a key value pair of the callable object and the delegate handler.
- These represent active catch blocks on the stack.
+ The delegate handler is closed over the callable object. Therefore as long as the object is alive the
+ delegate will stay alive and so will the callable object. That means it's fine to have a weak reference
+ to both of these objects.
-
+
+
+ Richly represents the signature of a callsite.
+
+
+
+
+ Array of additional meta information about the arguments, such as named arguments.
+ Null for a simple signature that's just an expression list. eg: foo(a*b,c,d)
+
+
+
+
+ Number of arguments in the signature.
+
+
+
+
+ True if the OldCallAction includes an ArgumentInfo of ArgumentKind.Dictionary or ArgumentKind.Named.
+
+
+
+
+ Gets the number of positional arguments the user provided at the call site.
+
+
+
+
+ All arguments are unnamed and matched by position.
+
+
+
+
+ Calculates the quotient of two 32-bit signed integers rounded towards negative infinity.
+
+ Dividend.
+ Divisor.
+ The quotient of the specified numbers rounded towards negative infinity, or (int)Floor((double)x/(double)y)
.
+ is 0.
+ The caller must check for overflow (x = Int32.MinValue, y = -1)
+
+
+
+ Calculates the quotient of two 32-bit signed integers rounded towards negative infinity.
+
+ Dividend.
+ Divisor.
+ The quotient of the specified numbers rounded towards negative infinity, or (int)Floor((double)x/(double)y)
.
+ is 0.
+ The caller must check for overflow (x = Int64.MinValue, y = -1)
+
+
+
+ Calculates the remainder of floor division of two 32-bit signed integers.
+
+ Dividend.
+ Divisor.
+ The remainder of of floor division of the specified numbers, or x - (int)Floor((double)x/(double)y) * y
.
+ is 0.
+
+
+
+ Calculates the remainder of floor division of two 32-bit signed integers.
+
+ Dividend.
+ Divisor.
+ The remainder of of floor division of the specified numbers, or x - (int)Floor((double)x/(double)y) * y
.
+ is 0.
+
+
+
+ Behaves like Math.Round(value, MidpointRounding.AwayFromZero)
+ Needed because CoreCLR doesn't support this particular overload of Math.Round
+
+
+
+
+ Behaves like Math.Round(value, precision, MidpointRounding.AwayFromZero)
+ However, it works correctly on negative precisions and cases where precision is
+ outside of the [-15, 15] range.
+
+ (This function is also needed because CoreCLR lacks this overload.)
+
+
+
+
+ Given an ID returns the object associated with that ID.
+
+
+
+
+ Gets a unique ID for an object
+
+
+
+
+ Goes over the hashtable and removes empty entries
+
+
+
+
+ Weak-ref wrapper caches the weak reference, our hash code, and the object ID.
+
+
+
+
+ WrapperComparer treats Wrapper as transparent envelope
+
+
+
+
+ Command line hosting service.
+
+
+
+
+ Executes the comand line - depending upon the options provided we will
+ either run a single file, a single command, or enter the interactive loop.
+
+
+
+
+ Runs the command line. Languages can override this to provide custom behavior other than:
+ 1. Running a single command
+ 2. Running a file
+ 3. Entering the interactive console loop.
+
+
+
+
+
+ Runs the specified filename
+
+
+
+
+ Starts the interactive loop. Performs any initialization necessary before
+ starting the loop and then calls RunInteractiveLoop to start the loop.
+
+ Returns the exit code when the interactive loop is completed.
+
+
+
+
+ Runs the interactive loop. Repeatedly parse and run interactive actions
+ until an exit code is received. If any exceptions are unhandled displays
+ them to the console
+
+
+
+
+ Attempts to run a single interaction and handle any language-specific
+ exceptions. Base classes can override this and call the base implementation
+ surrounded with their own exception handling.
+
+ Returns null if successful and execution should continue, or an exit code.
+
+
+
+
+ Parses a single interactive command or a set of statements and executes it.
+
+ Returns null if successful and execution should continue, or the appropiate exit code.
+
+ We check if the code read is an interactive command or statements is by checking for NewLine
+ If the code contains NewLine, it's a set of statements (most probably from SendToConsole)
+ If the code does not contain a NewLine, it's an interactive command typed by the user at the prompt
+
+
+
+
+ Private helper function to see if we should treat the current input as a blank link.
+
+ We do this if we only have auto-indent text.
+
+
+
+
+ Read a statement, which can potentially be a multiple-line statement suite (like a class declaration).
+
+ Should the console session continue, or did the user indicate
+ that it should be terminated?
+ Expression to evaluate. null for empty input
+
+
+
+ Gets the next level for auto-indentation
+
+
+
+
+ Scope is not remotable, and this only works in the same AppDomain.
+
+
+
+
+ Sets the current position inside current token or one character behind it.
+
+
+
+
+ Sets the current position inside current token or one character behind it.
+ A relative displacement with respect to the current position in the token is specified.
+
+
+
+
+ Marks token end. Enables to read the current token.
+
+
+
+
+ Marks token start. It means the buffer can drop the current token.
+ Can be called even if no token has been read yet.
+
+
+
+
+ Reads till the end of line and returns the character that stopped the reading.
+ The returned character is not skipped.
+
+
+
+
+ Resizes an array to a speficied new size and copies a portion of the original array into its beginning.
+
+
+
+
+ Indicates that a DynamicMetaObject might be convertible to a CLR type.
+
+
+
+
+ Directory where snippet assembly will be saved if SaveSnippets is set.
+
+
+
+
+ Save snippets to an assembly (see also SnippetsDirectory, SnippetsFileName).
+
+
+
+
+ Represents either a YieldBreak or YieldReturn in a GeneratorExpression
+ If Value is non-null, it's a YieldReturn; otherwise it's a YieldBreak
+ and executing it will stop enumeration of the generator, causing
+ MoveNext to return false.
+
+
+
+
+ The value yieled from this expression, if it is a yield return
+
+
+
+
+ The label used to yield from this generator
+
+
+
+
+ Wraps all arguments passed to a dynamic site with more arguments than can be accepted by a Func/Action delegate.
+ The binder generating a rule for such a site should unwrap the arguments first and then perform a binding to them.
+
+
+
+
+ Customize the CommandLine for remote scenarios
+
+
+
+
+ CommandDispatcher to ensure synchronize output from the remote runtime
+
+
+
+
+ ArgBuilder which always produces null.
+
+
+
+
+ ComEventSinksContainer is just a regular list with a finalizer.
+ This list is usually attached as a custom data for RCW object and
+ is finalized whenever RCW is finalized.
+
+
+
+
+ Stores information needed to emit debugging symbol information for a
+ source file, in particular the file name and unique language identifier
+
+
+
+
+ The source file name
+
+
+
+
+ Returns the language's unique identifier, if any
+
+
+
+
+ Returns the language vendor's unique identifier, if any
+
+
+
+
+ True if there are restrictions beyond just simple type restrictions
+
+
+
+
+ Encapsulates the result of an attempt to bind to one or methods using the OverloadResolver.
+
+ Users should first check the Result property to see if the binding was successful or
+ to determine the specific type of failure that occured. If the binding was successful
+ MakeExpression can then be called to create an expression which calls the method.
+ If the binding was a failure callers can then create a custom error message based upon
+ the reason the call failed.
+
+
+
+
+ Creates a new BindingTarget when the method binding has succeeded.
+
+
+
+
+ Creates a new BindingTarget when the method binding has failed due to an incorrect argument count
+
+
+
+
+ Creates a new BindingTarget when the method binding has failued due to
+ one or more parameters which could not be converted.
+
+
+
+
+ Creates a new BindingTarget when the match was ambiguous
+
+
+
+
+ Other failure.
+
+
+
+
+ Gets an Expression which calls the binding target if the method binding succeeded.
+
+ Throws InvalidOperationException if the binding failed.
+
+
+
+
+ Gets the result of the attempt to bind.
+
+
+
+
+ Returns the method if the binding succeeded, or null if no method was applicable.
+
+
+
+
+ Returns the selected overload if the binding succeeded, or null if no one was applicable.
+
+
+
+
+ Gets the name of the method as supplied to the OverloadResolver.
+
+
+
+
+ Returns the MethodTarget if the binding succeeded, or null if no method was applicable.
+
+
+
+
+ Returns the methods which don't have any matches or null if Result == BindingResult.AmbiguousMatch
+
+
+
+
+ Returns the methods and their associated conversion failures if Result == BindingResult.CallFailure.
+
+
+
+
+ Returns the acceptable number of arguments which can be passed to the method if Result == BindingResult.IncorrectArgumentCount.
+
+
+
+
+ Returns the total number of arguments provided to the call. 0 if the call succeeded or failed for a reason other
+ than argument count mismatch.
+
+
+
+
+ Gets the MetaObjects which we originally did binding against in their restricted form.
+
+ The members of the array correspond to each of the arguments. All members of the array
+ have a value.
+
+
+
+
+ Returns the return type of the binding, or null if no method was applicable.
+
+
+
+
+ Returns the NarrowingLevel of the method if the call succeeded. If the call
+ failed returns NarrowingLevel.None.
+
+
+
+
+ Returns true if the binding was succesful, false if it failed.
+
+ This is an alias for BindingTarget.Result == BindingResult.Success.
+
+
+
+
+ Creates an open delegate for the given (dynamic)method.
+
+
+
+
+ Creates a closed delegate for the given (dynamic)method.
+
+
+
Returns true if the specified parameter is mandatory, i.e. is not optional and doesn't have a default value.
-
+
- True if the MethodBase is method which is going to construct an object
+ Like Type.GetInterfaces, but only returns the interfaces implemented by this type
+ and not its parents.
-
+
- A helper routine to check if a type can be treated as sealed - i.e. there
- can never be a subtype of this given type. This corresponds to a type
- that is either declared "Sealed" or is a ValueType and thus unable to be
- extended.
-
-
-
-
- Returns the System.Type for any object, including null. The type of null
- is represented by None.Type and all other objects just return the
- result of Object.GetType
-
-
-
-
- Simply returns a Type[] from calling GetType on each element of args.
-
-
-
-
- EMITTED
- Used by default method binder to check types of splatted arguments.
-
-
-
-
- Given a MethodInfo which may be declared on a non-public type this attempts to
- return a MethodInfo which will dispatch to the original MethodInfo but is declared
- on a public type.
-
- Returns the original method if the method if a public version cannot be found.
-
-
-
-
- Non-public types can have public members that we find when calling type.GetMember(...). This
- filters out the non-visible members by attempting to resolve them to the correct visible type.
-
- If no correct visible type can be found then the member is not visible and we won't call it.
-
-
-
-
- Sees if two MemberInfos point to the same underlying construct in IL. This
- ignores the ReflectedType property which exists on MemberInfos which
- causes direct comparisons to be false even if they are the same member.
-
-
-
-
- Given a MethodInfo which may be declared on a non-public type this attempts to
- return a MethodInfo which will dispatch to the original MethodInfo but is declared
- on a public type.
-
- Throws InvalidOperationException if the method cannot be obtained.
-
-
-
-
- Returns a value which indicates failure when a OldConvertToAction of ImplicitTry or
- ExplicitTry.
-
-
-
-
- Creates an interpreted delegate for the lambda.
-
- The lambda to compile.
- A delegate which can interpret the lambda.
-
-
-
- Creates an interpreted delegate for the lambda.
-
- The lambda to compile.
- true if the presence of loops should result in a compiled delegate
- A delegate which can interpret the lambda.
-
-
-
- Creates an interpreted delegate for the lambda.
-
- The lambda's delegate type.
- The lambda to compile.
- A delegate which can interpret the lambda.
-
-
-
- Creates an interpreted delegate for the lambda.
-
- The lambda's delegate type.
- The lambda to compile.
- true if the presence of loops should result in a compiled delegate
- A delegate which can interpret the lambda.
-
-
-
- Compiles the lambda into a method definition.
-
- the lambda to compile
- A which will be used to hold the lambda's IL.
- A parameter that indicates if debugging information should be emitted to a PDB symbol store.
-
-
-
- Compiles the LambdaExpression.
-
- If the lambda is compiled with emitDebugSymbols, it will be
- generated into a TypeBuilder. Otherwise, this method is the same as
- calling LambdaExpression.Compile()
-
- This is a workaround for a CLR limitiation: DynamicMethods cannot
- have debugging information.
-
- the lambda to compile
- true to generate a debuggable method, false otherwise
- the compiled delegate
-
-
-
- Compiles the LambdaExpression, emitting it into a new type, and
- optionally making it debuggable.
-
- This is a workaround for a CLR limitiation: DynamicMethods cannot
- have debugging information.
-
- the lambda to compile
- Debugging information generator used by the compiler to mark sequence points and annotate local variables.
- True if debug symbols (PDBs) are emitted by the .
- the compiled delegate
-
-
-
- Reduces the provided DynamicExpression into site.Target(site, *args).
-
-
-
-
- Removes all live objects and places them in static fields of a type.
-
-
-
-
- The builder for creating the LambdaExpression node.
-
- Since the nodes require that parameters and variables are created
- before hand and then passed to the factories creating LambdaExpression
- this builder keeps track of the different pieces and at the end creates
- the LambdaExpression.
-
- TODO: This has some functionality related to CodeContext that should be
- removed, in favor of languages handling their own local scopes
-
-
-
-
- Creates a parameter on the lambda with a given name and type.
-
- Parameters maintain the order in which they are created,
- however custom ordering is possible via direct access to
- Parameters collection.
-
-
-
-
- Creates a parameter on the lambda with a given name and type.
-
- Parameters maintain the order in which they are created,
- however custom ordering is possible via direct access to
- Parameters collection.
-
-
-
-
- adds existing parameter to the lambda.
-
- Parameters maintain the order in which they are created,
- however custom ordering is possible via direct access to
- Parameters collection.
-
-
-
-
- Creates a hidden parameter on the lambda with a given name and type.
-
- Parameters maintain the order in which they are created,
- however custom ordering is possible via direct access to
- Parameters collection.
-
-
-
-
- Creates a params array argument on the labmda.
-
- The params array argument is added to the signature immediately. Before the lambda is
- created, the builder validates that it is still the last (since the caller can modify
- the order of parameters explicitly by maniuplating the parameter list)
-
-
-
-
- Creates a local variable with specified name and type.
- TODO: simplify by pushing logic into callers
-
-
-
-
- Creates a local variable with specified name and type.
- TODO: simplify by pushing logic into callers
-
-
-
-
- Creates a temporary variable with specified name and type.
-
-
-
-
- Adds the temporary variable to the list of variables maintained
- by the builder. This is useful in cases where the variable is
- created outside of the builder.
-
-
-
-
- Creates the LambdaExpression from the builder.
- After this operation, the builder can no longer be used to create other instances.
-
- Desired type of the lambda.
- New LambdaExpression instance.
-
-
-
- Creates the LambdaExpression from the builder.
- After this operation, the builder can no longer be used to create other instances.
-
- New LambdaExpression instance.
-
-
-
- Creates the generator LambdaExpression from the builder.
- After this operation, the builder can no longer be used to create other instances.
-
- New LambdaExpression instance.
-
-
-
- Fixes up lambda body and parameters to match the signature of the given delegate if needed.
-
-
-
-
-
- Validates that the builder has enough information to create the lambda.
-
-
-
-
- The name of the lambda.
- Currently anonymous/unnamed lambdas are not allowed.
-
-
-
-
- Return type of the lambda being created.
-
-
-
-
- List of lambda's local variables for direct manipulation.
-
-
-
-
- List of lambda's parameters for direct manipulation
-
-
-
-
- The params array argument, if any.
-
-
-
-
- The body of the lambda. This must be non-null.
-
-
-
-
- The generated lambda should have dictionary of locals
- instead of allocating them directly on the CLR stack.
-
-
-
-
- The scope is visible (default). Invisible if false.
+ Gets a Func of CallSite, object * paramCnt, object delegate type
+ that's suitable for use in a non-strongly typed call site.
@@ -3664,61 +4549,6 @@
Strongly-typed and parameterized string factory.
-
-
- A string like "Unexpected VarEnum {0}."
-
-
-
-
- A string like "Error while invoking {0}."
-
-
-
-
- A string like "Error while invoking {0}."
-
-
-
-
- A string like "Error while invoking {0}. Named arguments are not supported."
-
-
-
-
- A string like "Error while invoking {0}."
-
-
-
-
- A string like "Could not convert argument {0} for call to {1}."
-
-
-
-
- A string like "Error while invoking {0}. A required parameter was omitted."
-
-
-
-
- A string like "IDispatch::GetIDsOfNames behaved unexpectedly for {0}."
-
-
-
-
- A string like "Could not get dispatch ID for {0} (error: {1})."
-
-
-
-
- A string like "There are valid conversions from {0} to {1}."
-
-
-
-
- A string like "Variant.GetAccessor cannot handle {0}."
-
-
A string like "Cannot access member {1} declared on type {0} because the type contains generic parameters."
@@ -3869,49 +4699,59 @@
A string like "Non-verifiable assembly generated: {0}:\nAssembly preserved as {1}\nError text:\n{2}\n"
-
+
- A string like "COM object is expected."
+ A string like "Unexpected VarEnum {0}."
-
+
- A string like "Cannot perform call."
+ A string like "Error while invoking {0}."
-
+
- A string like "COM object does not support events."
+ A string like "Error while invoking {0}."
-
+
- A string like "COM object does not support specified source interface."
+ A string like "Error while invoking {0}. Named arguments are not supported."
-
+
- A string like "Marshal.SetComObjectData failed."
+ A string like "Error while invoking {0}."
-
+
- A string like "This method exists only to keep the compiler happy."
+ A string like "Could not convert argument {0} for call to {1}."
-
+
- A string like "ResolveComReference.CannotRetrieveTypeInformation."
+ A string like "Error while invoking {0}. A required parameter was omitted."
-
+
- A string like "Attempting to wrap an unsupported enum type."
+ A string like "IDispatch::GetIDsOfNames behaved unexpectedly for {0}."
-
+
- A string like "Attempting to pass an event handler of an unsupported type."
+ A string like "Could not get dispatch ID for {0} (error: {1})."
+
+
+
+
+ A string like "There are valid conversions from {0} to {1}."
+
+
+
+
+ A string like "Variant.GetAccessor cannot handle {0}."
@@ -4144,6 +4984,51 @@
A string like "can't write to property"
+
+
+ A string like "COM object is expected."
+
+
+
+
+ A string like "Cannot perform call."
+
+
+
+
+ A string like "COM object does not support events."
+
+
+
+
+ A string like "COM object does not support specified source interface."
+
+
+
+
+ A string like "Marshal.SetComObjectData failed."
+
+
+
+
+ A string like "This method exists only to keep the compiler happy."
+
+
+
+
+ A string like "ResolveComReference.CannotRetrieveTypeInformation."
+
+
+
+
+ A string like "Attempting to wrap an unsupported enum type."
+
+
+
+
+ A string like "Attempting to pass an event handler of an unsupported type."
+
+
Strongly-typed and parameterized exception factory.
@@ -4152,96 +5037,6 @@
Strongly-typed and parameterized exception factory.
-
-
- ArgumentException with message like "COM object does not support events."
-
-
-
-
- ArgumentException with message like "COM object does not support specified source interface."
-
-
-
-
- InvalidOperationException with message like "Marshal.SetComObjectData failed."
-
-
-
-
- InvalidOperationException with message like "This method exists only to keep the compiler happy."
-
-
-
-
- InvalidOperationException with message like "Unexpected VarEnum {0}."
-
-
-
-
- System.Reflection.TargetParameterCountException with message like "Error while invoking {0}."
-
-
-
-
- MissingMemberException with message like "Error while invoking {0}."
-
-
-
-
- ArgumentException with message like "Error while invoking {0}. Named arguments are not supported."
-
-
-
-
- OverflowException with message like "Error while invoking {0}."
-
-
-
-
- ArgumentException with message like "Could not convert argument {0} for call to {1}."
-
-
-
-
- ArgumentException with message like "Error while invoking {0}. A required parameter was omitted."
-
-
-
-
- InvalidOperationException with message like "ResolveComReference.CannotRetrieveTypeInformation."
-
-
-
-
- ArgumentException with message like "IDispatch::GetIDsOfNames behaved unexpectedly for {0}."
-
-
-
-
- InvalidOperationException with message like "Attempting to wrap an unsupported enum type."
-
-
-
-
- InvalidOperationException with message like "Attempting to pass an event handler of an unsupported type."
-
-
-
-
- MissingMemberException with message like "Could not get dispatch ID for {0} (error: {1})."
-
-
-
-
- System.Reflection.AmbiguousMatchException with message like "There are valid conversions from {0} to {1}."
-
-
-
-
- NotImplementedException with message like "Variant.GetAccessor cannot handle {0}."
-
-
ArgumentException with message like "Either code or target must be specified."
@@ -4512,286 +5307,106 @@
System.Security.VerificationException with message like "Non-verifiable assembly generated: {0}:\nAssembly preserved as {1}\nError text:\n{2}\n"
-
+
- Indicates the specific type of failure, if any, from binding to a method.
+ ArgumentException with message like "COM object does not support events."
-
+
- The binding succeeded. Only one method was applicable or had the best conversion.
+ ArgumentException with message like "COM object does not support specified source interface."
-
+
- More than one method was applicable for the provided parameters and no method was considered the best.
+ InvalidOperationException with message like "Marshal.SetComObjectData failed."
-
+
- There are no overloads that match the number of parameters required for the call
+ InvalidOperationException with message like "This method exists only to keep the compiler happy."
-
+
- None of the target method(s) can successfully be called. The failure can be due to:
- 1. Arguments could not be successfully converted for the call
- 2. Keyword arguments could not be assigned to positional arguments
- 3. Keyword arguments could be assigned but would result in an argument being assigned
- multiple times (keyword and positional arguments conflit or dupliate keyword arguments).
+ InvalidOperationException with message like "Unexpected VarEnum {0}."
-
+
- Actual arguments cannot be constructed.
+ System.Reflection.TargetParameterCountException with message like "Error while invoking {0}."
-
+
- Implements explicit casts supported by the runtime.
-
-
- Implements explicit casts supported by the runtime.
+ MissingMemberException with message like "Error while invoking {0}."
-
+
- Explicitly casts the object to a given type (and returns it as object)
+ ArgumentException with message like "Error while invoking {0}. Named arguments are not supported."
-
+
- A binder which can combine multiple binders into a single dynamic site. The creator
- of this needs to perform the mapping of parameters, constants, and sub-site expressions
- and provide a List of BinderMappingInfo representing this data. From there the ComboBinder
- just processes the list to create the resulting code.
+ OverflowException with message like "Error while invoking {0}."
-
+
- Provides a mapping for inputs of combo action expressions. The input can map
- to either an input of the new dynamic site, an input of a previous DynamicExpression,
- or a ConstantExpression which has been pulled out of the dynamic site arguments.
+ ArgumentException with message like "Could not convert argument {0} for call to {1}."
-
+
- Contains the mapping information for a single Combo Binder. This includes the original
- meta-binder and the mapping of parameters, sub-sites, and constants into the binding.
+ ArgumentException with message like "Error while invoking {0}. A required parameter was omitted."
-
- A simple forth-style stack machine for executing Expression trees
- without the need to compile to IL and then invoke the JIT. This trades
- off much faster compilation time for a slower execution performance.
- For code that is only run a small number of times this can be a
- sweet spot.
-
- The core loop in the interpreter is the RunInstructions method.
-
-
+
- Look for typeinfo using IDispatch.GetTypeInfo
-
-
-
- Some COM objects just dont expose typeinfo. In these cases, this method will return null.
- Some COM objects do intend to expose typeinfo, but may not be able to do so if the type-library is not properly
- registered. This will be considered as acceptable or as an error condition depending on throwIfMissingExpectedTypeInfo
-
-
-
-
- This method should be called when typeinfo is not available for an object. The function
- will check if the typeinfo is expected to be missing. This can include error cases where
- the same error is guaranteed to happen all the time, on all machines, under all circumstances.
- In such cases, we just have to operate without the typeinfo.
-
- However, if accessing the typeinfo is failing in a transient way, we might want to throw
- an exception so that we will eagerly predictably indicate the problem.
+ InvalidOperationException with message like "ResolveComReference.CannotRetrieveTypeInformation."
-
+
- This class contains methods that either cannot be expressed in C#, or which require writing unsafe code.
- Callers of these methods need to use them extremely carefully as incorrect use could cause GC-holes
- and other problems.
-
-
-
-
-
- Ensure that "value" is a local variable in some caller's frame. So converting
- the byref to an IntPtr is a safe operation. Alternatively, we could also allow
- allowed "value" to be a pinned object.
+ ArgumentException with message like "IDispatch::GetIDsOfNames behaved unexpectedly for {0}."
-
+
- We will emit an indirect call to an unmanaged function pointer from the vtable of the given interface pointer.
- This approach can take only ~300 instructions on x86 compared with ~900 for Marshal.Release. We are relying on
- the JIT-compiler to do pinvoke-stub-inlining and calling the pinvoke target directly.
+ InvalidOperationException with message like "Attempting to wrap an unsupported enum type."
-
+
- We will emit an indirect call to an unmanaged function pointer from the vtable of the given IDispatch interface pointer.
- It is not possible to express this in C#. Using an indirect pinvoke call allows us to do our own marshalling.
- We can allocate the Variant arguments cheaply on the stack. We are relying on the JIT-compiler to do
- pinvoke-stub-inlining and calling the pinvoke target directly.
- The alternative of calling via a managed interface declaration of IDispatch would have a performance
- penalty of going through a CLR stub that would have to re-push the arguments on the stack, etc.
- Marshal.GetDelegateForFunctionPointer could be used here, but its too expensive (~2000 instructions on x86).
+ InvalidOperationException with message like "Attempting to pass an event handler of an unsupported type."
-
+
- Specifies the action for which the default binder is requesting a member.
+ MissingMemberException with message like "Could not get dispatch ID for {0} (error: {1})."
-
+
- Determines the result of a conversion action. The result can either result in an exception, a value that
- has been successfully converted or default(T), or a true/false result indicating if the value can be converted.
+ System.Reflection.AmbiguousMatchException with message like "There are valid conversions from {0} to {1}."
-
+
- Attempts to perform available implicit conversions and throws if there are no available conversions.
+ NotImplementedException with message like "Variant.GetAccessor cannot handle {0}."
-
+
- Attempst to perform available implicit and explicit conversions and throws if there are no available conversions.
+ A NullTextContentProvider to be provided when we have a pre-compiled ScriptCode which doesn't
+ have source code associated with it.
-
+
- Attempts to perform available implicit conversions and returns default(ReturnType) if no conversions can be performed.
-
- If the return type of the rule is a value type then the return value will be zero-initialized. If the return type
- of the rule is object or another class then the return type will be null (even if the conversion is to a value type).
- This enables ImplicitTry to be used to do TryConvertTo even if the type is value type (and the difference between
- null and a real value can be distinguished).
-
-
-
-
- Attempts to perform available implicit and explicit conversions and returns default(ReturnType) if no conversions
- can be performed.
-
- If the return type of the rule is a value type then the return value will be zero-initialized. If the return type
- of the rule is object or another class then the return type will be null (even if the conversion is to a value type).
- This enables ExplicitTry to be used to do TryConvertTo even if the type is value type (and the difference between
- null and a real value can be distinguished).
-
-
-
-
- Exposes a IDictionary<SymbolId, object> as a IDictionary<object, object<
-
-
-
-
- Provides a cache of reflection members. Only one set of values is ever handed out per a
- specific request.
-
-
-
-
- Gets a singleton method group from the provided type.
-
- The provided method group will be unique based upon the methods defined, not based upon the type/name
- combination. In other words calling GetMethodGroup on a base type and a derived type that introduces
- no new methods under a given name will result in the same method group for both types.
-
-
-
-
- TODO: Make me private again
-
-
-
-
- The way in which a module has changed : Set or Delete
-
-
-
-
- A new value has been set in the module (or a previous value has changed).
-
-
-
-
- A value has been removed from the module.
-
-
-
-
- Provides a mechanism for providing documentation stored in an assembly as metadata.
-
- Applying this attribute will enable documentation to be provided to the user at run-time
- even if XML Docuementation files are unavailable.
-
-
-
-
- An attribute that is applied to saved ScriptCode's to be used to re-create the ScriptCode
- from disk.
-
-
-
-
- Gets names stored in optimized scope.
-
-
-
-
- A useful interface for taking slices of numeric arrays, inspired by Python's Slice objects.
-
-
-
-
- The starting index of the slice or null if no first index defined
-
-
-
-
- The ending index of the slice or null if no ending index defined
-
-
-
-
- The length of step to take
-
-
-
-
- Literal script command given using -c option
-
-
-
-
- Filename to execute passed on the command line options.
-
-
-
-
- Only print the version of the script interpreter and exit
-
-
-
-
-
-
-
- name == null means that the argument doesn't specify an option; the value contains the entire argument
- name == "" means that the option name is empty (argument separator); the value is null then
-
-
-
-
- Gets custom data to be serialized when saving script codes to disk.
+ Enables an object to be serializable to an Expression tree. The expression tree can then
+ be emitted into an assembly enabling the de-serialization of the object.
@@ -4799,908 +5414,139 @@
Gets the Compiler associated with the Type Initializer (cctor) creating it if necessary.
-
+
- This allows the RemoteConsoleHost to abort a long-running operation. The RemoteConsoleHost itself
- does not know which ThreadPool thread might be processing the remote call, and so it needs
- cooperation from the remote runtime server.
-
-
-
-
- Since OnOutputDataReceived is sent async, it can arrive late. The remote console
- cannot know if all output from the current command has been received. So
- RemoteCommandDispatcher writes out a marker to indicate the end of the output
-
-
-
-
- Aborts the current active call to Execute by doing Thread.Abort
-
- true if a Thread.Abort was actually called. false if there is no active call to Execute
-
-
-
- This represents a bound dispmember on a IDispatch object.
-
-
-
-
- Represents extension method.
-
-
-
-
- The declaring type of the extension (the type this extension method extends)
-
-
-
-
- The declaring type of the extension method. Since this is an extension method,
- the declaring type is in fact the type this extension method extends,
- not Method.DeclaringType
-
-
-
-
- Encapsulates information about the result that should be produced when
- a OldDynamicAction cannot be performed. The ErrorInfo can hold one of:
- an expression which creates an Exception to be thrown
- an expression which produces a value which should be returned
- directly to the user and represents an error has occured (for
- example undefined in JavaScript)
- an expression which produces a value which should be returned
- directly to the user but does not actually represent an error.
+ If a managed user type (as opposed to a primitive type or a COM object) is passed as an argument to a COM call, we need
+ to determine the VarEnum type we will marshal it as. We have the following options:
+ 1. Raise an exception. Languages with their own version of primitive types would not be able to call
+ COM methods using the language's types (for eg. strings in IronRuby are not System.String). An explicit
+ cast would be needed.
+ 2. We could marshal it as VT_DISPATCH. Then COM code will be able to access all the APIs in a late-bound manner,
+ but old COM components will probably malfunction if they expect a primitive type.
+ 3. We could guess which primitive type is the closest match. This will make COM components be as easily
+ accessible as .NET methods.
+ 4. We could use the type library to check what the expected type is. However, the type library may not be available.
- ErrorInfo's are produced by an ActionBinder in response to a failed
- binding.
+ VarEnumSelector implements option # 3
-
+
- Private constructor - consumers must use static From* factories
- to create ErrorInfo objects.
-
-
-
-
- Creates a new ErrorInfo which represents an exception that should
- be thrown.
-
-
-
-
- Creates a new ErrorInfo which represents a value which should be
- returned to the user.
-
-
-
-
- Crates a new ErrorInfo which represents a value which should be returned
- to the user but does not represent an error.
-
-
-
-
-
-
- The ErrorInfo expression produces an exception
-
-
-
-
- The ErrorInfo expression produces a value which represents the error (e.g. undefined)
-
-
-
-
- The ErrorInfo expression produces a value which is not an error
-
-
-
-
- Wraps the provided enumerable into a ReadOnlyCollection{T}
+ Gets the managed type that an object needs to be coverted to in order for it to be able
+ to be represented as a Variant.
- Copies all of the data into a new array, so the data can't be
- changed after creation. The exception is if the enumerable is
- already a ReadOnlyCollection{T}, in which case we just return it.
+ In general, there is a many-to-many mapping between Type and VarEnum. However, this method
+ returns a simple mapping that is needed for the current implementation. The reason for the
+ many-to-many relation is:
+ 1. Int32 maps to VT_I4 as well as VT_ERROR, and Decimal maps to VT_DECIMAL and VT_CY. However,
+ this changes if you throw the wrapper types into the mix.
+ 2. There is no Type to represent COM types. __ComObject is a private type, and Object is too
+ general.
-
+
- Handles input and output for the console. It is comparable to System.IO.TextReader,
- System.IO.TextWriter, System.Console, etc
+ Creates a family of COM types such that within each family, there is a completely non-lossy
+ conversion from a type to an earlier type in the family.
-
+
- Read a single line of interactive input, or a block of multi-line statements.
+ Get the (one representative type for each) primitive type families that the argument can be converted to
+
+
+
+
+ If there is more than one type family that the argument can be converted to, we will throw a
+ AmbiguousMatchException instead of randomly picking a winner.
+
+
+
+
+ Is there a unique primitive type that has the best conversion for the argument
+
+
+
+
+ Get the COM Variant type that argument should be marshaled as for a call to COM
+
+
+
+
+ An argument that the user wants to explicitly pass by-reference (with copy-in copy-out semantics).
+ The user passes a StrongBox[T] object whose value will get updated when the call returns.
+
+
+
+
+ Represents the reason why a call to a specific method could not be performed by the OverloadResolver.
- An event-driven GUI console can implement this method by creating a thread that
- blocks and waits for an event indicating that input is available
-
- The indentation level to be used for the current suite of a compound statement.
- The console can ignore this argument if it does not want to support auto-indentation
- null if the input stream has been closed. A string with a command to execute otherwise.
- It can be a multi-line string which should be processed as block of statements
-
-
-
-
- Sets the current position inside current token or one character behind it.
-
-
-
-
- Sets the current position inside current token or one character behind it.
- A relative displacement with respect to the current position in the token is specified.
-
-
-
-
- Marks token end. Enables to read the current token.
-
-
-
-
- Marks token start. It means the buffer can drop the current token.
- Can be called even if no token has been read yet.
-
-
-
-
- Reads till the end of line and returns the character that stopped the reading.
- The returned character is not skipped.
-
-
-
-
- Resizes an array to a speficied new size and copies a portion of the original array into its beginning.
-
-
-
-
- When finding a yield return or yield break, this rewriter flattens out
- containing blocks, scopes, and expressions with stack state. All
- scopes encountered have their variables promoted to the generator's
- closure, so they survive yields.
-
-
-
-
- Makes an assignment to this variable. Pushes the assignment as far
- into the right side as possible, to allow jumps into it.
-
-
-
-
- Returns true if the expression remains constant no matter when it is evaluated.
-
-
-
-
- Represents the type of a null value.
-
-
-
-
- Private constructor is never called since 'null' is the only valid instance.
-
-
-
-
- Builds a parameter for a reference argument when a StrongBox has not been provided. The
- updated return value is returned as one of the resulting return values.
-
-
-
-
- Updates fields/properties of the returned value with unused keyword parameters.
-
-
-
-
- Represents information about a failure to convert an argument from one
- type to another.
-
-
-
-
- Value of the argument or null if it is not available.
-
-
-
-
- Argument actual type or its limit type if the value not known.
- DynamicNull if the argument value is null.
-
-
-
- Specifies that the member is a constructor, representing a ConstructorTracker
-
-
- Specifies that the member is an event, representing a EventTracker
-
-
- Specifies that the member is a field, representing a FieldTracker
-
-
- Specifies that the member is a method, representing a MethodTracker
-
-
- Specifies that the member is a property, representing a PropertyTracker
-
-
- Specifies that the member is a property, representing a TypeTracker
-
-
- Specifies that the member is a namespace, representing a NamespaceTracker
-
-
- Specifies that the member is a group of method overloads, representing a MethodGroup
-
-
- Specifies that the member is a group of types that very by arity, representing a TypeGroup
-
-
- Specifies that the member is a custom meber, represetning a CustomTracker
-
-
- Specifies that the member is a bound to an instance, representing a BoundMemberTracker
-
-
-
- Internal class which binds a LanguageContext, StreamContentProvider, and Encoding together to produce
- a TextContentProvider which reads binary data with the correct language semantics.
-
-
-
-
- Implementation of the complex number data type.
-
-
-
-
- A simple dictionary of queues, keyed off a particular type
- This is useful for storing free lists of variables
-
-
-
-
- Wrapping a tree in this node enables jumps from finally blocks
- It does this by generating control-flow logic in the tree
+ The reason for the failure is specified by the CallFailureReason property. Once this property
+ has been consulted the other properties can be consulted for more detailed information regarding
+ the failure.
- Reducing this node requires a full tree walk of its body
- (but not nested lambdas)
-
- WARNING: this node cannot contain jumps across blocks, because it
- assumes any unknown jumps are jumps to an outer scope.
+ If reason is ConversionFailure the ConversionResults property will be non-null.
+ If reason is UnassignableKeyword the KeywordArguments property will be non-null and include
+ the keywords which could not be assigned.
+ If reason is DuplicateKeyword the KeywordArguments property will be non-null and include
+ the keywords which were duplicated (either by the keywords themselves or by positional
+ arguments).
+
+ MethodTarget is always set and indicates the method which failed to bind.
-
+
- Provides a StreamContentProvider for a stream of content backed by a file on disk.
+ Gets the MethodTarget which the call failed for.
-
+
- A custom member tracker which enables languages to plug in arbitrary
- members into the lookup process.
+ Gets the reason for the call failure which determines the other
+ properties of the CallFailure which should be consulted.
-
+
- A simple hashset, built on Dictionary{K, V}
+ Gets a list of ConversionResult's for each parameter indicating
+ whether the conversion was successful or failed and the types
+ being converted.
-
+
- Calculates the quotient of two 32-bit signed integers rounded towards negative infinity.
+ Gets the list of keyword arguments that were either dupliated or
+ unassignable.
- Dividend.
- Divisor.
- The quotient of the specified numbers rounded towards negative infinity, or (int)Floor((double)x/(double)y)
.
- is 0.
- The caller must check for overflow (x = Int32.MinValue, y = -1)
-
+
- Calculates the quotient of two 32-bit signed integers rounded towards negative infinity.
+ Represents the top reflected package which contains extra information such as
+ all the assemblies loaded and the built-in modules.
- Dividend.
- Divisor.
- The quotient of the specified numbers rounded towards negative infinity, or (int)Floor((double)x/(double)y)
.
- is 0.
- The caller must check for overflow (x = Int64.MinValue, y = -1)
-
+
- Calculates the remainder of floor division of two 32-bit signed integers.
+ returns the package associated with the specified namespace and
+ updates the associated module to mark the package as imported.
- Dividend.
- Divisor.
- The remainder of of floor division of the specified numbers, or x - (int)Floor((double)x/(double)y) * y
.
- is 0.
-
+
- Calculates the remainder of floor division of two 32-bit signed integers.
+ Ensures that the assembly is loaded
- Dividend.
- Divisor.
- The remainder of of floor division of the specified numbers, or x - (int)Floor((double)x/(double)y) * y
.
- is 0.
+
+ true if the assembly was loaded for the first time.
+ false if the assembly had already been loaded before
-
+
- Behaves like Math.Round(value, MidpointRounding.AwayFromZero)
- Needed because CoreCLR doesn't support this particular overload of Math.Round
+ When an (interop) assembly is loaded, we scan it to discover the GUIDs of COM interfaces so that we can
+ associate the type definition with COM objects with that GUID.
+ Since scanning all loaded assemblies can be expensive, in the future, we might consider a more explicit
+ user binder to trigger scanning of COM types.
-
-
- Behaves like Math.Round(value, precision, MidpointRounding.AwayFromZero)
- However, it works correctly on negative precisions and cases where precision is
- outside of the [-15, 15] range.
-
- (This function is also needed because CoreCLR lacks this overload.)
-
-
-
-
- ScriptCode is an instance of compiled code that is bound to a specific LanguageContext
- but not a specific ScriptScope. The code can be re-executed multiple times in different
- scopes. Hosting API counterpart for this class is CompiledCode.
-
-
-
-
- This takes an assembly name including extension and saves the provided ScriptCode objects into the assembly.
-
- The provided script codes can constitute code from multiple languages. The assemblyName can be either a fully qualified
- or a relative path. The DLR will simply save the assembly to the desired location. The assembly is created by the DLR and
- if a file already exists than an exception is raised.
-
- The DLR determines the internal format of the ScriptCode and the DLR can feel free to rev this as appropriate.
-
-
-
-
- This will take an assembly object which the user has loaded and return a new set of ScriptCode�s which have
- been loaded into the provided ScriptDomainManager.
-
- If the language associated with the ScriptCode�s has not already been loaded the DLR will load the
- LanguageContext into the ScriptDomainManager based upon the saved LanguageContext type.
-
- If the LanguageContext or the version of the DLR the language was compiled against is unavailable a
- TypeLoadException will be raised unless policy has been applied by the administrator to redirect bindings.
-
-
-
-
- A stack of variables that are defined in nested scopes. We search
- this first when resolving a variable in case a nested scope shadows
- one of our variable instances.
-
-
-
-
- This class implements an event sink for a particular RCW.
- Unlike the implementation of events in TlbImp'd assemblies,
- we will create only one event sink per RCW (theoretically RCW might have
- several ComEventSink evenk sinks - but all these implement different source intefaces).
- Each ComEventSink contains a list of ComEventSinkMethod objects - which represent
- a single method on the source interface an a multicast delegate to redirect
- the calls. Notice that we are chaining multicast delegates so that same
- ComEventSinkMedhod can invoke multiple event handlers).
-
- ComEventSink implements an IDisposable pattern to Unadvise from the connection point.
- Typically, when RCW is finalized the corresponding Dispose will be triggered by
- ComEventSinksContainer finalizer. Notice that lifetime of ComEventSinksContainer
- is bound to the lifetime of the RCW.
-
-
-
-
- Contains a methods DISPID (in a string formatted of "[DISPID=N]"
- and a chained list of delegates to invoke
-
-
-
-
- Builds the parameter for a params dictionary argument - this collects all the extra name/value
- pairs provided to the function into a SymbolDictionary which is passed to the function.
-
-
-
-
- Requires the specified index to point inside the array.
-
- Array is null.
- Index is outside the array.
-
-
-
- Requires the specified index to point inside the array.
-
- Index is outside the array.
-
-
-
- Requires the specified index to point inside the array or at the end
-
- Array is null.
- Index is outside the array.
-
-
-
- Requires the specified index to point inside the array or at the end
-
- Array is null.
- Index is outside the array.
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Offset or count are out of range.
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Offset or count are out of range.
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Array is null.
- Offset or count are out of range.
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- String is null.
- Offset or count are out of range.
-
-
-
- Requires the array and all its items to be non-null.
-
-
-
-
- Requires the enumerable collection and all its items to be non-null.
-
-
-
-
- Converts a generic ICollection of T into an array of T.
-
- If the collection is already an array of T the original collection is returned.
-
-
-
-
- Marks a class in the assembly as being an extension type for another type.
-
-
-
-
- Marks a type in the assembly as being an extension type for another type.
-
- The type which is being extended
- The type which provides the extension members.
-
-
-
- The type which contains extension members which are added to the type being extended.
-
-
-
-
- The type which is being extended by the extension type.
-
-
-
-
- This helper type lets us build a fake ParameterInfo object with a specific type and name
- to pass along to methods that expect ParameterInfos. This is currently found useful
- for the NewTypeMaker code and may be useful in other situations as well.
-
-
-
-
- Simple class for tracking a list of items and enumerating over them.
- The items are stored in weak references; if the objects are collected,
- they will not be seen when enumerating.
-
- The type of the collection element.
-
-
-
- Given an ID returns the object associated with that ID.
-
-
-
-
- Gets a unique ID for an object
-
-
-
-
- Goes over the hashtable and removes empty entries
-
-
-
-
- Weak-ref wrapper caches the weak reference, our hash code, and the object ID.
-
-
-
-
- WrapperComparer treats Wrapper as transparent envelope
-
-
-
-
- ConsoleHost where the ScriptRuntime is hosted in a separate process (referred to as the remote runtime server)
-
- The RemoteConsoleHost spawns the remote runtime server and specifies an IPC channel name to use to communicate
- with each other. The remote runtime server creates and initializes a ScriptRuntime and a ScriptEngine, and publishes
- it over the specified IPC channel at a well-known URI. Note that the RemoteConsoleHost cannot easily participate
- in the initialization of the ScriptEngine as classes like LanguageContext are not remotable.
-
- The RemoteConsoleHost then starts the interactive loop and executes commands on the ScriptEngine over the remoting channel.
- The RemoteConsoleHost listens to stdout of the remote runtime server and echos it locally to the user.
-
-
-
-
- Allows the console to customize the environment variables, working directory, etc.
-
- At the least, processInfo.FileName should be initialized
-
-
-
- Aborts the current active call to Execute by doing Thread.Abort
-
- true if a Thread.Abort was actually called. false if there is no active call to Execute
-
-
-
- Called if the remote runtime process exits by itself. ie. without the remote console killing it.
-
-
-
-
- Layout of the IDispatch vtable
-
-
-
-
- ComEventSinkProxy class is responsible for handling QIs for sourceIid
- on instances of ComEventSink.
-
- Background: When a COM even sink advises to a connection point it is
- supposed to hand over the dispinterface. Now, some hosts will trust
- the COM client to pass the correct pointer, but some will not.
- E.g. Excel's implementation of Connection Points will not cause a
- QI on the pointer that has been passed, however Word will QI the
- pointer to return the required interface.
-
- ComEventSink does not, strongly speaking, implements the interface
- that it claims to implement - it is just "faking" it by using IReflect.
- Thus, Word's QIs on the pointer passed to ICP::Advise would fail. To
- prevent this we take advangate of RealProxy's ability of
- "dressing up" like other classes and hence successfully respond to QIs
- for interfaces that it does not really support( it is OK to say
- "I implement this interface" for event sinks only since the common
- practice is to use IDistpach.Invoke when calling into event sinks).
-
-
-
-
- Provides the implementation of performing AddAssign and SubtractAssign binary operations.
-
- The binder provided by the call site.
- The handler for the operation.
- The result of the operation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Adds a handler to an event.
-
- The handler to be added.
- The original event with handler added.
-
-
-
- Removes handler from the event.
-
- The handler to be removed.
- The original event with handler removed.
-
-
-
- We don't need to insert code to track lines in adaptive mode as the
- interpreter does that for us. TODO: improve the adaptive compiler so we
- don't need to do this, and can just remove line tracking from languages
-
-
-
-
- Gets the generic arguments for method based upon the constraints discovered during
- type inference. Returns null if not all generic arguments had their types inferred.
-
-
-
-
- Creates a new set of arg builders for the given generic method definition which target the new
- parameters.
-
-
-
-
- Creates a new list of ParameterWrappers for the generic method replacing the old parameters with the new ones.
-
-
-
-
- Gets the generic type arguments sorted so that the type arguments
- that are depended upon by other type arguments are sorted before
- their dependencies.
-
-
-
-
- Checks to see if the x type parameter is dependent upon the y type parameter.
-
-
-
-
- Builds a mapping based upon generic parameter constraints between related generic
- parameters. This is then used to sort the generic parameters so that we can process
- the least dependent parameters first. For example given the method:
-
- void Foo<T0, T1>(T0 x, T1 y) where T0 : T1
-
- We need to first infer the type information for T1 before we infer the type information
- for T0 so that we can ensure the constraints are correct.
-
-
-
-
- Returns a mapping from generic type parameter to the input DMOs which map to it.
-
-
-
-
- Adds any additional ArgumentInputs entries for the given object and parameter type.
-
-
-
-
- Walks the nested generic hierarchy to construct all of the generic parameters referred
- to by this type. For example if getting the generic parameters for the x parameter on
- the method:
-
- void Foo<T0, T1>(Dictionary<T0, T1> x);
-
- We would add both typeof(T0) and typeof(T1) to the list of generic arguments.
-
-
-
-
- Maps a single type parameter to the possible parameters and DynamicMetaObjects
- we can get inference from. For example for the signature:
-
- void Foo<T0, T1>(T0 x, T1 y, IList<T1> z);
-
- We would have one ArgumentInput for T0 which holds onto the DMO providing the argument
- value for x. We would also have one ArgumentInput for T1 which holds onto the 2 DMOs
- for y and z. Associated with y would be a GenericParameterInferer and associated with
- z would be a ConstructedParameterInferer.
-
-
-
-
- Provides generic type inference for a single parameter.
-
-
-
-
- Checks if the constraints are violated by the given input for the specified generic method parameter.
-
- This method must be supplied with a mapping for any dependent generic method type parameters which
- this one can be constrained to. For example for the signature "void Foo<T0, T1>(T0 x, T1 y) where T0 : T1".
- we cannot know if the constraints are violated unless we know what we have calculated T1 to be.
-
-
-
-
- The parameter type which inference is happening for. This is the actual parameter type
- and not the generic parameter. For example it could be IList<T> or T.
-
-
-
-
- Provides type inference for a parameter which is typed to be a method type parameter.
-
- For example: M<T>(T x)
-
-
-
-
- Provides type inference for a parameter which is constructed from a method type parameter.
-
- For example: M<T>(IList<T> x)
-
-
-
-
- Constructs a new parameter inferer for the given parameter type which should
- contain generic parameters but not it's self be a generic parameter.
-
-
-
-
-
- Performs the actual inference by mapping any generic arguments which map onto method type parameters
- to the available type information for the incoming object.
-
-
-
-
- Implemented by DynamicMetaObject subclasses when the associated object
- can participate in generic method type inference. This interface
- is used when the inference engine is attempting to perform type inference
- for a parameter which is typed to a delegate type.
-
-
-
-
- Returns the type inferred for parameterType when performing
- inference for a conversion to delegateType.
-
-
-
-
- Provides information about the result of a custom object which dynamically
- infers back types.
-
- Currently only used for invokable objects to feedback the types for a delegate
- type.
-
-
-
-
- Represents an ops-extension method which is added as an operator.
-
- The name must be a well-formed name such as "Add" that matches the CLS
- naming conventions for adding overloads associated with op_* methods.
-
-
-
-
- Event args for when a ScriptScope has had its contents changed.
-
-
-
-
- Creates a new ModuleChangeEventArgs object with the specified name and type.
-
-
-
-
- Creates a nwe ModuleChangeEventArgs with the specified name, type, and changed value.
-
-
-
-
- Gets the name of the symbol that has changed.
-
-
-
-
- Gets the way in which the symbol has changed: Set or Delete.
-
-
-
-
- The the symbol has been set provides the new value.
-
-
-
-
- Sets the value at the given index for a tuple of the given size. This set supports
- walking through nested tuples to get the correct final index.
-
-
-
-
- Gets the value at the given index for a tuple of the given size. This get
- supports walking through nested tuples to get the correct final index.
-
-
-
-
- Gets the unbound generic Tuple type which has at lease size slots or null if a large enough tuple is not available.
-
-
-
-
- Creates a generic tuple with the specified types.
-
- If the number of slots fits within the maximum tuple size then we simply
- create a single tuple. If it's greater then we create nested tuples
- (e.g. a Tuple`2 which contains a Tuple`128 and a Tuple`8 if we had a size of 136).
-
-
-
-
- Gets the number of usable slots in the provided Tuple type including slots available in nested tuples.
-
-
-
-
- Creates a new instance of tupleType with the specified args. If the tuple is a nested
- tuple the values are added in their nested forms.
-
-
-
-
- Gets the values from a tuple including unpacking nested values.
-
-
-
-
- Gets the series of properties that needs to be accessed to access a logical item in a potentially nested tuple.
-
-
-
-
- Gets the series of properties that needs to be accessed to access a logical item in a potentially nested tuple.
-
-
-
-
- Provides an expression for creating a tuple with the specified values.
-
-
-
-
- A helper routine to check if a type can be treated as sealed - i.e. there
- can never be a subtype of this given type. This corresponds to a type
- that is either declared "Sealed" or is a ValueType and thus unable to be
- extended.
-
- TODO: this should not be needed. Type.IsSealed does the right thing.
-
-
-
-
- Returns true if the specified parameter is mandatory, i.e. is not optional and doesn't have a default value.
-
-
-
-
- Returns the list of expressions represented by the instances.
-
- An array of instances to extract expressions from.
- The array of expressions.
-
-
-
- Creates an instance of for a runtime value and the expression that represents it during the binding process.
-
- The runtime value to be represented by the .
- An expression to represent this during the binding process.
- The new instance of .
-
The console input buffer.
@@ -5782,32 +5628,36 @@
Beginning position of the cursor - left coordinate.
-
+
- Directory where snippet assembly will be saved if SaveSnippets is set.
+ Helper class to remove methods w/ identical signatures. Used for GetDefaultMembers
+ which returns members from all types in the hierarchy.
-
+
- Save snippets to an assembly (see also SnippetsDirectory, SnippetsFileName).
+ Gets custom data to be serialized when saving script codes to disk.
-
+
- Represents either a YieldBreak or YieldReturn in a GeneratorExpression
- If Value is non-null, it's a YieldReturn; otherwise it's a YieldBreak
- and executing it will stop enumeration of the generator, causing
- MoveNext to return false.
+ Gets a copy of the local variables which are defined in the current scope.
+
+
+
+
+
+ Checks to see if the given variable is defined within the current local scope.
-
+
- The value yieled from this expression, if it is a yield return
+ Gets the variables which are defined in an outer scope and available within the current scope.
-
+
- The label used to yield from this generator
+ Tracks where a variable is defined and what range of instructions it's used in
@@ -5822,7 +5672,7 @@
- Indexes of variables into the closure array
+ Local variable mapping.
@@ -5838,13 +5688,13 @@
one of our variable instances.
-
+
Walks the lambda and produces a higher order function, which can be
used to bind the lambda to a closure array from the interpreter.
The lambda to bind.
- The variables that are closed over from an outer scope.
+ Variables which are being accessed defined in the outer scope.
A delegate that can be called to produce a delegate bound to the passed in closure array.
@@ -5852,67 +5702,481 @@
Provides a list of variables, supporing read/write of the values
-
+
- Provides a simple expression which enables embedding FieldBuilder's
- in an AST before the type is complete.
+ This is similar to ComTypes.EXCEPINFO, but lets us do our own custom marshaling
-
+
- If a managed user type (as opposed to a primitive type or a COM object) is passed as an argument to a COM call, we need
- to determine the VarEnum type we will marshal it as. We have the following options:
- 1. Raise an exception. Languages with their own version of primitive types would not be able to call
- COM methods using the language's types (for eg. strings in IronRuby are not System.String). An explicit
- cast would be needed.
- 2. We could marshal it as VT_DISPATCH. Then COM code will be able to access all the APIs in a late-bound manner,
- but old COM components will probably malfunction if they expect a primitive type.
- 3. We could guess which primitive type is the closest match. This will make COM components be as easily
- accessible as .NET methods.
- 4. We could use the type library to check what the expected type is. However, the type library may not be available.
+ This class implements an event sink for a particular RCW.
+ Unlike the implementation of events in TlbImp'd assemblies,
+ we will create only one event sink per RCW (theoretically RCW might have
+ several ComEventSink evenk sinks - but all these implement different source intefaces).
+ Each ComEventSink contains a list of ComEventSinkMethod objects - which represent
+ a single method on the source interface an a multicast delegate to redirect
+ the calls. Notice that we are chaining multicast delegates so that same
+ ComEventSinkMedhod can invoke multiple event handlers).
- VarEnumSelector implements option # 3
+ ComEventSink implements an IDisposable pattern to Unadvise from the connection point.
+ Typically, when RCW is finalized the corresponding Dispose will be triggered by
+ ComEventSinksContainer finalizer. Notice that lifetime of ComEventSinksContainer
+ is bound to the lifetime of the RCW.
-
+
- Gets the managed type that an object needs to be coverted to in order for it to be able
- to be represented as a Variant.
+ Contains a methods DISPID (in a string formatted of "[DISPID=N]"
+ and a chained list of delegates to invoke
+
+
+
+
+ Provides helper methods to bind COM objects dynamically.
+
+
+
+
+ Determines if an object is a COM object.
+
+ The object to test.
+ true if the object is a COM object, false otherwise.
+
+
+
+ Tries to perform binding of the dynamic get member operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ The new representing the result of the binding.
+ true if member evaluation may be delayed.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic get member operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic set member operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ The representing the value for the set member operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic invoke operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ An array of instances - arguments to the invoke member operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic invoke member operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ An array of instances - arguments to the invoke member operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic get index operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ An array of instances - arguments to the invoke member operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic set index operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ An array of instances - arguments to the invoke member operation.
+ The representing the value for the set index operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Tries to perform binding of the dynamic Convert operation.
+
+ An instance of the that represents the details of the dynamic operation.
+ The target of the dynamic operation.
+ The new representing the result of the binding.
+ true if operation was bound successfully; otherwise, false.
+
+
+
+ Gets the member names associated with the object.
+ This function can operate only with objects for which returns true.
+
+ The object for which member names are requested.
+ The collection of member names.
+
+
+
+ Gets the member names of the data-like members associated with the object.
+ This function can operate only with objects for which returns true.
+
+ The object for which member names are requested.
+ The collection of member names.
+
+
+
+ Gets the data-like members and associated data for an object.
+ This function can operate only with objects for which returns true.
+
+ The object for which data members are requested.
+ The enumeration of names of data members for which to retrieve values.
+ The collection of pairs that represent data member's names and their data.
+
+
+
+ Special binder that indicates special semantics for COM GetMember operation.
+
+
+
+
+ Builds a parameter for a reference argument when a StrongBox has not been provided. The
+ updated return value is returned as one of the resulting return values.
+
+
+
+
+ The way in which a module has changed : Set or Delete
+
+
+
+
+ A new value has been set in the module (or a previous value has changed).
+
+
+
+
+ A value has been removed from the module.
+
+
+
+
+ Serializes constants and dynamic sites so the code can be saved to disk
+
+
+
+
+ List optimized for few writes and multiple reads. It provides thread-safe read and write access.
+ Iteration is not thread-safe by default, but GetCopyForRead allows for iteration
+ without taking a lock.
+
+
+
+
+ Gets a copy of the contents of the list. The copy will not change even if the original
+ CopyOnWriteList object is modified. This method should be used to iterate the list in
+ a thread-safe way if no lock is taken. Iterating on the original list is not guaranteed
+ to be thread-safe.
+
+ The returned copy should not be modified by the caller.
+
+
+
+ Provides a dictionary-like object used for caches which holds onto a maximum
+ number of elements specified at construction time.
- In general, there is a many-to-many mapping between Type and VarEnum. However, this method
- returns a simple mapping that is needed for the current implementation. The reason for the
- many-to-many relation is:
- 1. Int32 maps to VT_I4 as well as VT_ERROR, and Decimal maps to VT_DECIMAL and VT_CY. However,
- this changes if you throw the wrapper types into the mix.
- 2. There is no Type to represent COM types. __ComObject is a private type, and Object is too
- general.
+ This class is not thread safe.
-
+
- Creates a family of COM types such that within each family, there is a completely non-lossy
- conversion from a type to an earlier type in the family.
+ Creates a dictionary-like object used for caches.
+
+ The maximum number of elements to store.
+
+
+
+ Tries to get the value associated with 'key', returning true if it's found and
+ false if it's not present.
-
+
- Get the (one representative type for each) primitive type families that the argument can be converted to
+ Adds a new element to the cache, replacing and moving it to the front if the
+ element is already present.
-
+
- If there is more than one type family that the argument can be converted to, we will throw a
- AmbiguousMatchException instead of randomly picking a winner.
+ Returns the value associated with the given key, or throws KeyNotFoundException
+ if the key is not present.
-
+
- Is there a unique primitive type that has the best conversion for the argument
+ The builder for creating the LambdaExpression node.
+
+ Since the nodes require that parameters and variables are created
+ before hand and then passed to the factories creating LambdaExpression
+ this builder keeps track of the different pieces and at the end creates
+ the LambdaExpression.
+
+ TODO: This has some functionality related to CodeContext that should be
+ removed, in favor of languages handling their own local scopes
-
+
- Get the COM Variant type that argument should be marshaled as for a call to COM
+ Creates a parameter on the lambda with a given name and type.
+
+ Parameters maintain the order in which they are created,
+ however custom ordering is possible via direct access to
+ Parameters collection.
+
+
+
+
+ Creates a parameter on the lambda with a given name and type.
+
+ Parameters maintain the order in which they are created,
+ however custom ordering is possible via direct access to
+ Parameters collection.
+
+
+
+
+ adds existing parameter to the lambda.
+
+ Parameters maintain the order in which they are created,
+ however custom ordering is possible via direct access to
+ Parameters collection.
+
+
+
+
+ Creates a hidden parameter on the lambda with a given name and type.
+
+ Parameters maintain the order in which they are created,
+ however custom ordering is possible via direct access to
+ Parameters collection.
+
+
+
+
+ Creates a params array argument on the labmda.
+
+ The params array argument is added to the signature immediately. Before the lambda is
+ created, the builder validates that it is still the last (since the caller can modify
+ the order of parameters explicitly by maniuplating the parameter list)
+
+
+
+
+ Creates a local variable with specified name and type.
+ TODO: simplify by pushing logic into callers
+
+
+
+
+ Creates a local variable with specified name and type.
+ TODO: simplify by pushing logic into callers
+
+
+
+
+ Creates a temporary variable with specified name and type.
+
+
+
+
+ Adds the temporary variable to the list of variables maintained
+ by the builder. This is useful in cases where the variable is
+ created outside of the builder.
+
+
+
+
+ Creates the LambdaExpression from the builder.
+ After this operation, the builder can no longer be used to create other instances.
+
+ Desired type of the lambda.
+ New LambdaExpression instance.
+
+
+
+ Creates the LambdaExpression from the builder.
+ After this operation, the builder can no longer be used to create other instances.
+
+ New LambdaExpression instance.
+
+
+
+ Creates the generator LambdaExpression from the builder.
+ After this operation, the builder can no longer be used to create other instances.
+
+ New LambdaExpression instance.
+
+
+
+ Fixes up lambda body and parameters to match the signature of the given delegate if needed.
+
+
+
+
+
+ Validates that the builder has enough information to create the lambda.
+
+
+
+
+ The name of the lambda.
+ Currently anonymous/unnamed lambdas are not allowed.
+
+
+
+
+ Return type of the lambda being created.
+
+
+
+
+ List of lambda's local variables for direct manipulation.
+
+
+
+
+ List of lambda's parameters for direct manipulation
+
+
+
+
+ The params array argument, if any.
+
+
+
+
+ The body of the lambda. This must be non-null.
+
+
+
+
+ The generated lambda should have dictionary of locals
+ instead of allocating them directly on the CLR stack.
+
+
+
+
+ The scope is visible (default). Invisible if false.
+
+
+
+
+ VariantBuilder handles packaging of arguments into a Variant for a call to IDispatch.Invoke
+
+
+
+
+ Look for typeinfo using IDispatch.GetTypeInfo
+
+
+
+ Some COM objects just dont expose typeinfo. In these cases, this method will return null.
+ Some COM objects do intend to expose typeinfo, but may not be able to do so if the type-library is not properly
+ registered. This will be considered as acceptable or as an error condition depending on throwIfMissingExpectedTypeInfo
+
+
+
+
+ This method should be called when typeinfo is not available for an object. The function
+ will check if the typeinfo is expected to be missing. This can include error cases where
+ the same error is guaranteed to happen all the time, on all machines, under all circumstances.
+ In such cases, we just have to operate without the typeinfo.
+
+ However, if accessing the typeinfo is failing in a transient way, we might want to throw
+ an exception so that we will eagerly predictably indicate the problem.
+
+
+
+
+ This class contains methods that either cannot be expressed in C#, or which require writing unsafe code.
+ Callers of these methods need to use them extremely carefully as incorrect use could cause GC-holes
+ and other problems.
+
+
+
+
+
+ Ensure that "value" is a local variable in some caller's frame. So converting
+ the byref to an IntPtr is a safe operation. Alternatively, we could also allow
+ allowed "value" to be a pinned object.
+
+
+
+
+ We will emit an indirect call to an unmanaged function pointer from the vtable of the given interface pointer.
+ This approach can take only ~300 instructions on x86 compared with ~900 for Marshal.Release. We are relying on
+ the JIT-compiler to do pinvoke-stub-inlining and calling the pinvoke target directly.
+
+
+
+
+ We will emit an indirect call to an unmanaged function pointer from the vtable of the given IDispatch interface pointer.
+ It is not possible to express this in C#. Using an indirect pinvoke call allows us to do our own marshalling.
+ We can allocate the Variant arguments cheaply on the stack. We are relying on the JIT-compiler to do
+ pinvoke-stub-inlining and calling the pinvoke target directly.
+ The alternative of calling via a managed interface declaration of IDispatch would have a performance
+ penalty of going through a CLR stub that would have to re-push the arguments on the stack, etc.
+ Marshal.GetDelegateForFunctionPointer could be used here, but its too expensive (~2000 instructions on x86).
+
+
+
+
+ Determines the result of a conversion action. The result can either result in an exception, a value that
+ has been successfully converted or default(T), or a true/false result indicating if the value can be converted.
+
+
+
+
+ Attempts to perform available implicit conversions and throws if there are no available conversions.
+
+
+
+
+ Attempst to perform available implicit and explicit conversions and throws if there are no available conversions.
+
+
+
+
+ Attempts to perform available implicit conversions and returns default(ReturnType) if no conversions can be performed.
+
+ If the return type of the rule is a value type then the return value will be zero-initialized. If the return type
+ of the rule is object or another class then the return type will be null (even if the conversion is to a value type).
+ This enables ImplicitTry to be used to do TryConvertTo even if the type is value type (and the difference between
+ null and a real value can be distinguished).
+
+
+
+
+ Attempts to perform available implicit and explicit conversions and returns default(ReturnType) if no conversions
+ can be performed.
+
+ If the return type of the rule is a value type then the return value will be zero-initialized. If the return type
+ of the rule is object or another class then the return type will be null (even if the conversion is to a value type).
+ This enables ExplicitTry to be used to do TryConvertTo even if the type is value type (and the difference between
+ null and a real value can be distinguished).
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.dll b/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.dll
index a4666d0..107609f 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.dll and b/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.dll differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.pdb b/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.pdb
index 51c9c99..cd4c87e 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.pdb and b/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.pdb differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.xml b/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.xml
index e3dc862..9275fdb 100644
--- a/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.xml
+++ b/aspclassiccompiler/bin/Release/Microsoft.Scripting.Core.xml
@@ -4,28 +4,980 @@
Microsoft.Scripting.Core
-
+
- Generates debug information for lambdas in an expression tree.
+ An interface to represent values of runtime variables.
-
+
- Creates PDB symbol generator.
+ Count of the variables.
- PDB symbol generator.
-
+
- Marks a sequence point.
+ An indexer to get/set the values of the runtime variables.
- The lambda being generated.
- IL offset where to mark the sequence point.
- Debug informaton corresponding to the sequence point.
+ An index of the runtime variable.
+ The value of the runtime variable.
-
+
- Represents an infinite loop. It can be exited with "break".
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Array is null.
+ Offset or count are out of range.
+
+
+
+ Requires the array and all its items to be non-null.
+
+
+
+
+ Represents a visitor or rewriter for expression trees.
+
+
+ This class is designed to be inherited to create more specialized
+ classes whose functionality requires traversing, examining or copying
+ an expression tree.
+
+
+
+
+ Initializes a new instance of .
+
+
+
+
+ Dispatches the expression to one of the more specialized visit methods in this class.
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Dispatches the list of expressions to one of the more specialized visit methods in this class.
+
+ The expressions to visit.
+ The modified expression list, if any of the elements were modified;
+ otherwise, returns the original expression list.
+
+
+
+ Visits all nodes in the collection using a specified element visitor.
+
+ The type of the nodes.
+ The nodes to visit.
+ A delegate that visits a single element,
+ optionally replacing it with a new element.
+ The modified node list, if any of the elements were modified;
+ otherwise, returns the original node list.
+
+
+
+ Visits an expression, casting the result back to the original expression type.
+
+ The type of the expression.
+ The expression to visit.
+ The name of the calling method; used to report to report a better error message.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+ The visit method for this node returned a different type.
+
+
+
+ Visits an expression, casting the result back to the original expression type.
+
+ The type of the expression.
+ The expression to visit.
+ The name of the calling method; used to report to report a better error message.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+ The visit method for this node returned a different type.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the extension expression.
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+ This can be overridden to visit or rewrite specific extension nodes.
+ If it is not overridden, this method will call ,
+ which gives the node a chance to walk its children. By default,
+ will try to reduce the node.
+
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The type of the delegate.
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Visits the children of the .
+
+ The expression to visit.
+ The modified expression, if it or any subexpression was modified;
+ otherwise, returns the original expression.
+
+
+
+ Write out the given AST
+
+
+
+
+ Return true if the input string contains any whitespace character.
+ Otherwise false.
+
+
+
+
+ This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
+ Contains helper methods called from dynamically generated methods.
+
+
+
+
+ Quotes the provided expression tree.
+
+ The expression to quote.
+ The hoisted local state provided by the compiler.
+ The actual hoisted local values.
+ The quoted expression.
+
+
+
+ Combines two runtime variable lists and returns a new list.
+
+ The first list.
+ The second list.
+ The index array indicating which list to get variables from.
+ The merged runtime variables.
+
+
+
+ Gets the value of an item in an expando object.
+
+ The expando object.
+ The class of the expando object.
+ The index of the member.
+ The name of the member.
+ true if the name should be matched ignoring case; false otherwise.
+ The out parameter containing the value of the member.
+ True if the member exists in the expando object, otherwise false.
+
+
+
+ Sets the value of an item in an expando object.
+
+ The expando object.
+ The class of the expando object.
+ The index of the member.
+ The value of the member.
+ The name of the member.
+ true if the name should be matched ignoring case; false otherwise.
+
+ Returns the index for the set member.
+
+
+
+
+ Deletes the value of an item in an expando object.
+
+ The expando object.
+ The class of the expando object.
+ The index of the member.
+ The name of the member.
+ true if the name should be matched ignoring case; false otherwise.
+ true if the item was successfully removed; otherwise, false.
+
+
+
+ Checks the version of the expando object.
+
+ The expando object.
+ The version to check.
+ true if the version is equal; otherwise, false.
+
+
+
+ Promotes an expando object from one class to a new class.
+
+ The expando object.
+ The old class of the expando object.
+ The new class of the expando object.
+
+
+
+ Creates an interface that can be used to modify closed over variables at runtime.
+
+ The closure array.
+ An array of indicies into the closure array where variables are found.
+ An interface to access variables.
+
+
+
+ Creates an interface that can be used to modify closed over variables at runtime.
+
+ An interface to access variables.
+
+
+
+ Provides a list of variables, supporing read/write of the values
+ Exposed via RuntimeVariablesExpression
+
+
+
+
+ Provides a list of variables, supporing read/write of the values
+ Exposed via RuntimeVariablesExpression
+
+
+
+
+ CompilerScope is the data structure which the Compiler keeps information
+ related to compiling scopes. It stores the following information:
+ 1. Parent relationship (for resolving variables)
+ 2. Information about hoisted variables
+ 3. Information for resolving closures
+
+ Instances are produced by VariableBinder, which does a tree walk
+ looking for scope nodes: LambdaExpression and BlockExpression.
+
+
+
+
+ parent scope, if any
+
+
+
+
+ The expression node for this scope
+ Can be LambdaExpression, BlockExpression, or CatchBlock
+
+
+
+
+ True if this node corresponds to an IL method.
+ Can only be true if the Node is a LambdaExpression.
+ But inlined lambdas will have it set to false.
+
+
+
+
+ Does this scope (or any inner scope) close over variables from any
+ parent scope?
+ Populated by VariableBinder
+
+
+
+
+ Variables defined in this scope, and whether they're hoisted or not
+ Populated by VariableBinder
+
+
+
+
+ Each variable referenced within this scope, and how often it was referenced
+ Populated by VariableBinder
+
+
+
+
+ Scopes whose variables were merged into this one
+
+ Created lazily as we create hundreds of compiler scopes w/o merging scopes when compiling rules.
+
+
+
+
+ The scope's hoisted locals, if any.
+ Provides storage for variables that are referenced from nested lambdas
+
+
+
+
+ The closed over hoisted locals
+
+
+
+
+ Mutable dictionary that maps non-hoisted variables to either local
+ slots or argument slots
+
+
+
+
+ Called when entering a lambda/block. Performs all variable allocation
+ needed, including creating hoisted locals and IL locals for accessing
+ parent locals
+
+
+
+
+ Frees unnamed locals, clears state associated with this compiler
+
+
+
+
+ Adds a new virtual variable corresponding to an IL local
+
+
+
+
+ Resolve a local variable in this scope or a closed over scope
+ Throws if the variable is defined
+
+
+
+
+ This scope's hoisted locals, or the closed over locals, if any
+ Equivalent to: _hoistedLocals ?? _closureHoistedLocals
+
+
+
+
+ Output a given expression tree to a string.
+
+
+
+
+ Output a given member binding to a string.
+
+
+
+
+ Output a given ElementInit to a string.
+
+
+
+
+ Represents the binary dynamic operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ The dynamic call site binder that participates in the binding protocol.
+
+
+ The performs the binding of the dynamic operation using the runtime values
+ as input. On the other hand, the participates in the
+ binding protocol.
+
+
+
+
+ Class responsible for runtime binding of the dynamic operations on the dynamic call site.
+
+
+
+
+ The Level 2 cache - all rules produced for the same binder.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Performs the runtime binding of the dynamic operation on a set of arguments.
+
+ An array of arguments to the dynamic operation.
+ The array of instances that represent the parameters of the call site in the binding process.
+ A LabelTarget used to return the result of the dynamic binding.
+
+ An Expression that performs tests on the dynamic operation arguments, and
+ performs the dynamic operation if hte tests are valid. If the tests fail on
+ subsequent occurrences of the dynamic operation, Bind will be called again
+ to produce a new for the new argument types.
+
+
+
+
+ Provides low-level runtime binding support. Classes can override this and provide a direct
+ delegate for the implementation of rule. This can enable saving rules to disk, having
+ specialized rules available at runtime, or providing a different caching policy.
+
+ The target type of the CallSite.
+ The CallSite the bind is being performed for.
+ The arguments for the binder.
+ A new delegate which replaces the CallSite Target.
+
+
+
+ Adds a target to the cache of known targets. The cached targets will
+ be scanned before calling BindDelegate to produce the new rule.
+
+ The type of target being added.
+ The target delegate to be added to the cache.
+
+
+
+ Gets a label that can be used to cause the binding to be updated. It
+ indicates that the expression's binding is no longer valid.
+ This is typically used when the "version" of a dynamic object has
+ changed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Performs the runtime binding of the dynamic operation on a set of arguments.
+
+ An array of arguments to the dynamic operation.
+ The array of instances that represent the parameters of the call site in the binding process.
+ A LabelTarget used to return the result of the dynamic binding.
+
+ An Expression that performs tests on the dynamic operation arguments, and
+ performs the dynamic operation if the tests are valid. If the tests fail on
+ subsequent occurrences of the dynamic operation, Bind will be called again
+ to produce a new for the new argument types.
+
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic operation.
+
+ The target of the dynamic operation.
+ An array of arguments of the dynamic operation.
+ The representing the result of the binding.
+
+
+
+ Gets an expression that will cause the binding to be updated. It
+ indicates that the expression's binding is no longer valid.
+ This is typically used when the "version" of a dynamic object has
+ changed.
+
+ The Type property of the resulting expression; any type is allowed.
+ The update expression.
+
+
+
+ Defers the binding of the operation until later time when the runtime values of all dynamic operation arguments have been computed.
+
+ The target of the dynamic operation.
+ An array of arguments of the dynamic operation.
+ The representing the result of the binding.
+
+
+
+ Defers the binding of the operation until later time when the runtime values of all dynamic operation arguments have been computed.
+
+ An array of arguments of the dynamic operation.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The binary operation kind.
+
+
+
+ Performs the binding of the binary dynamic operation if the target dynamic object cannot bind.
+
+ The target of the dynamic binary operation.
+ The right hand side operand of the dynamic binary operation.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the binary dynamic operation if the target dynamic object cannot bind.
+
+ The target of the dynamic binary operation.
+ The right hand side operand of the dynamic binary operation.
+ The binding result in case the binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic binary operation.
+
+ The target of the dynamic operation.
+ An array of arguments of the dynamic operation.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ The binary operation kind.
+
+
+
+
+ Wraps the provided enumerable into a ReadOnlyCollection{T}
+
+ Copies all of the data into a new array, so the data can't be
+ changed after creation. The exception is if the enumerable is
+ already a ReadOnlyCollection{T}, in which case we just return it.
+
+
+
+
+ Dynamic Language Runtime Compiler.
+ This part compiles lambdas.
+
+
+ LambdaCompiler is responsible for compiling individual lambda (LambdaExpression). The complete tree may
+ contain multiple lambdas, the Compiler class is reponsible for compiling the whole tree, individual
+ lambdas are then compiled by the LambdaCompiler.
+
+
+
+
+ Gets the common test test value type of the SwitchExpression.
+
+
+
+
+ Creates the label for this case.
+ Optimization: if the body is just a goto, and we can branch
+ to it, put the goto target directly in the jump table.
+
+
+
+
+ Emits the start of a catch block. The exception value that is provided by the
+ CLR is stored in the variable specified by the catch block or popped if no
+ variable is provided.
+
+
+
+
+ returns true if the expression is not empty, otherwise false.
+
+
+
+
+ returns true if the expression is NOT empty and is not debug info,
+ or a block that contains only insignificant expressions.
+
+
+
+
+ Emits the expression and then either brtrue/brfalse to the label.
+
+ True for brtrue, false for brfalse.
+ The expression to emit.
+ The label to conditionally branch to.
+
+ This function optimizes equality and short circuiting logical
+ operators to avoid double-branching, minimize instruction count,
+ and generate similar IL to the C# compiler. This is important for
+ the JIT to optimize patterns like:
+ x != null AndAlso x.GetType() == typeof(SomeType)
+
+ One optimization we don't do: we always emits at least one
+ conditional branch to the label, and always possibly falls through,
+ even if we know if the branch will always succeed or always fail.
+ We do this to avoid generating unreachable code, which is fine for
+ the CLR JIT, but doesn't verify with peverify.
+
+ This kind of optimization could be implemented safely, by doing
+ constant folding over conditionals and logical expressions at the
+ tree level.
+
+
+
+
+ Emits code which creates new instance of the delegateType delegate.
+
+ Since the delegate is getting closed over the "Closure" argument, this
+ cannot be used with virtual/instance methods (inner must be static method)
+
+
+
+
+ Emits a delegate to the method generated for the LambdaExpression.
+ May end up creating a wrapper to match the requested delegate type.
+
+ Lambda for which to generate a delegate
+
+
+
+
+ Emits the lambda body. If inlined, the parameters should already be
+ pushed onto the IL stack.
+
+ The parent scope.
+ true if the lambda is inlined; false otherwise.
+
+ The emum to specify if the lambda is compiled with the tail call optimization.
+
+
+
+
+ Update the flag with a new EmitAsTailCall flag
+
+
+
+
+ Update the flag with a new EmitExpressionStart flag
+
+
+
+
+ Update the flag with a new EmitAsType flag
+
+
+
+
+ Generates code for this expression in a value position.
+ This method will leave the value of the expression
+ on the top of the stack typed as Type.
+
+
+
+
+ Emits an expression and discards the result. For some nodes this emits
+ more optimial code then EmitExpression/Pop
+
+
+
+
+ Emits arguments to a call, and returns an array of writebacks that
+ should happen after the call.
+
+
+
+
+ Emits arguments to a call, and returns an array of writebacks that
+ should happen after the call. For emitting dynamic expressions, we
+ need to skip the first parameter of the method (the call site).
+
+
+
+
+ The value is true if a clearance was emitted and no new sequence point
+ has been emitted since that.
+
+
+
+
+ Creates a lambda compiler that will compile to a dynamic method
+
+
+
+
+ Creates a lambda compiler that will compile into the provided Methodbuilder
+
+
+
+
+ Creates a lambda compiler for an inlined lambda
+
+
+
+
+ Compiler entry point
+
+ LambdaExpression to compile.
+ Debug info generator.
+ The compiled delegate.
+
+
+
+ Mutates the MethodBuilder parameter, filling in IL, parameters,
+ and return type.
+
+ (probably shouldn't be modifying parameters/return type...)
+
+
+
+
+ Gets the argument slot corresponding to the parameter at the given
+ index. Assumes that the method takes a certain number of prefix
+ arguments, followed by the real parameters stored in Parameters
+
+
+
+
+ Returns the index-th argument. This method provides access to the actual arguments
+ defined on the lambda itself, and excludes the possible 0-th closure argument.
+
+
+
+
+ Creates an unitialized field suitible for private implementation details
+ Works with DynamicMethods or TypeBuilders.
+
+
+
+
+ Represents an operation between an expression and a type.
@@ -33,752 +985,6 @@
The base type for all nodes in Expression Trees.
-
-
- Creates a with the given body.
-
- The body of the loop.
- The created .
-
-
-
- Creates a with the given body and break target.
-
- The body of the loop.
- The break target used by the loop body.
- The created .
-
-
-
- Creates a with the given body.
-
- The body of the loop.
- The break target used by the loop body.
- The continue target used by the loop body.
- The created .
-
-
-
- Creates a that represents the recursive initialization of members of a field or property.
-
- The to set the property equal to.
- An array of objects to use to populate the collection.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents the recursive initialization of members of a field or property.
-
- The to set the property equal to.
- An that contains objects to use to populate the collection.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents the recursive initialization of members of a member that is accessed by using a property accessor method.
-
- The that represents a property accessor method.
- An that contains objects to use to populate the collection.
-
- A that has the property equal to ,
- the Member property set to the that represents the property accessed in ,
- and properties set to the specified values.
-
-
-
-
- Creates a that represents the recursive initialization of members of a member that is accessed by using a property accessor method.
-
- The that represents a property accessor method.
- An that contains objects to use to populate the collection.
-
- A that has the property equal to ,
- the Member property set to the that represents the property accessed in ,
- and properties set to the specified values.
-
-
-
-
- Creates an instance of .
-
- An array of objects to use to populate the collection.
- An instance of that has the property equal to and the property set to the specified value.
-
-
-
- Creates an instance of .
-
- A collection of objects to use to populate the collection.
- An instance of that has the property equal to and the property set to the specified value.
-
-
-
- Creates a representing a break statement.
-
- The that the will jump to.
-
- A with equal to Break,
- the property set to , and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a break statement. The value passed to the label upon jumping can be specified.
-
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
-
- A with equal to Break,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a break statement with the specified type.
-
- The that the will jump to.
- An to set the property equal to.
-
- A with equal to Break,
- the property set to ,
- and the property set to .
-
-
-
-
- Creates a representing a break statement with the specified type.
- The value passed to the label upon jumping can be specified.
-
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
- An to set the property equal to.
-
- A with equal to Break,
- the property set to ,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a continue statement.
-
- The that the will jump to.
-
- A with equal to Continue,
- the property set to ,
- and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a continue statement with the specified type.
-
- The that the will jump to.
- An to set the property equal to.
-
- A with equal to Continue,
- the property set to ,
- the property set to ,
- and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a return statement.
-
- The that the will jump to.
-
- A with equal to Return,
- the property set to ,
- and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a return statement with the specified type.
-
- The that the will jump to.
- An to set the property equal to.
-
- A with equal to Return,
- the property set to ,
- the property set to ,
- and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a return statement. The value passed to the label upon jumping can be specified.
-
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
-
- A with equal to Continue,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a return statement with the specified type.
- The value passed to the label upon jumping can be specified.
-
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
- An to set the property equal to.
-
- A with equal to Continue,
- the property set to ,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a goto.
-
- The that the will jump to.
-
- A with equal to Goto,
- the property set to the specified value,
- and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a goto with the specified type.
-
- The that the will jump to.
- An to set the property equal to.
-
- A with equal to Goto,
- the property set to the specified value,
- the property set to ,
- and a null value to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a goto. The value passed to the label upon jumping can be specified.
-
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
-
- A with equal to Goto,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a goto with the specified type.
- The value passed to the label upon jumping can be specified.
-
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
- An to set the property equal to.
-
- A with equal to Goto,
- the property set to ,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
-
- Creates a representing a jump of the specified .
- The value passed to the label upon jumping can also be specified.
-
- The of the .
- The that the will jump to.
- The value that will be passed to the associated label upon jumping.
- An to set the property equal to.
-
- A with equal to ,
- the property set to ,
- the property set to ,
- and to be passed to the target label upon jumping.
-
-
-
- Creates a that represents a call to a static method that takes one argument.
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- The that represents the first argument.
-
- is null.
-
-
- Creates a that represents a call to a static method that takes two arguments.
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- The that represents the first argument.
- The that represents the second argument.
-
- is null.
-
-
- Creates a that represents a call to a static method that takes three arguments.
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- The that represents the first argument.
- The that represents the second argument.
- The that represents the third argument.
-
- is null.
-
-
- Creates a that represents a call to a static method that takes four arguments.
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- The that represents the first argument.
- The that represents the second argument.
- The that represents the third argument.
- The that represents the fourth argument.
-
- is null.
-
-
- Creates a that represents a call to a static method that takes five arguments.
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- The that represents the first argument.
- The that represents the second argument.
- The that represents the third argument.
- The that represents the fourth argument.
- The that represents the fifth argument.
-
- is null.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents a call to a static (Shared in Visual Basic) method.
-
- The that represents the target method.
- The array of one or more of that represents the call arguments.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents a call to a static (Shared in Visual Basic) method.
-
- The that represents the target method.
- A collection of that represents the call arguments.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents a call to a method that takes no arguments.
-
- An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
- The that represents the target method.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents a method call.
-
- An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
- The that represents the target method.
- An array of one or more of that represents the call arguments.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents a call to a method that takes two arguments.
-
- An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
- The that represents the target method.
- The that represents the first argument.
- The that represents the second argument.
- A that has the property equal to and the and properties set to the specified values.
-
-
-
- Creates a that represents a call to a method that takes three arguments.
-
- An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
- The that represents the target method.
- The that represents the first argument.
- The that represents the second argument.
- The that represents the third argument.
- A that has the property equal to and the and properties set to the specified values.
-
-
- Creates a that represents a call to an instance method by calling the appropriate factory method.
- A that has the property equal to , the property equal to , set to the that represents the specified instance method, and set to the specified arguments.
- An whose property value will be searched for a specific method.
- The name of the method.
-
- An array of objects that specify the type parameters of the generic method.
- This argument should be null when specifies a non-generic method.
-
- An array of objects that represents the arguments to the method.
-
- or is null.
- No method whose name is , whose type parameters match , and whose parameter types match is found in .Type or its base types.-or-More than one method whose name is , whose type parameters match , and whose parameter types match is found in .Type or its base types.
-
-
- Creates a that represents a call to a static (Shared in Visual Basic) method by calling the appropriate factory method.
- A that has the property equal to , the property set to the that represents the specified static (Shared in Visual Basic) method, and the property set to the specified arguments.
- The that specifies the type that contains the specified static (Shared in Visual Basic) method.
- The name of the method.
-
- An array of objects that specify the type parameters of the generic method.
- This argument should be null when specifies a non-generic method.
-
- An array of objects that represent the arguments to the method.
-
- or is null.
- No method whose name is , whose type parameters match , and whose parameter types match is found in or its base types.-or-More than one method whose name is , whose type parameters match , and whose parameter types match is found in or its base types.
-
-
- Creates a that represents a method call.
- A that has the property equal to and the , , and properties set to the specified values.
- An to set the property equal to (pass null for a static (Shared in Visual Basic) method).
- A to set the property equal to.
- An that contains objects to use to populate the collection.
-
- is null.-or- is null and represents an instance method.
-
- .Type is not assignable to the declaring type of the method represented by .-or-The number of elements in does not equal the number of parameters for the method represented by .-or-One or more of the elements of is not assignable to the corresponding parameter for the method represented by .
-
-
- Creates a that represents applying an array index operator to a multi-dimensional array.
- A that has the property equal to and the and properties set to the specified values.
- An array of instances - indexes for the array index operation.
- An array that contains objects to use to populate the collection.
-
-
- Creates a that represents applying an array index operator to an array of rank more than one.
- A that has the property equal to and the and properties set to the specified values.
- An to set the property equal to.
- An that contains objects to use to populate the collection.
-
- or is null.
-
- .Type does not represent an array type.-or-The rank of .Type does not match the number of elements in .-or-The property of one or more elements of does not represent the type.
-
-
-
- Constructs a new instance of .
-
-
-
-
- Reduces this node to a simpler expression. If CanReduce returns
- true, this should return a valid expression. This method is
- allowed to return another node which itself must be reduced.
-
- The reduced expression.
-
-
-
- Reduces the node and then calls the visitor delegate on the reduced expression.
- Throws an exception if the node isn't reducible.
-
- An instance of .
- The expression being visited, or an expression which should replace it in the tree.
-
- Override this method to provide logic to walk the node's children.
- A typical implementation will call visitor.Visit on each of its
- children, and if any of them change, should return a new copy of
- itself with the modified children.
-
-
-
-
- Dispatches to the specific visit method for this node type. For
- example, will call into
- .
-
- The visitor to visit this node with.
- The result of visiting this node.
-
- This default implementation for
- nodes will call .
- Override this method to call into a more specific method on a derived
- visitor class of ExprressionVisitor. However, it should still
- support unknown visitors by calling VisitExtension.
-
-
-
-
- Reduces this node to a simpler expression. If CanReduce returns
- true, this should return a valid expression. This method is
- allowed to return another node which itself must be reduced.
-
- The reduced expression.
-
- Unlike Reduce, this method checks that the reduced node satisfies
- certain invariants.
-
-
-
-
- Reduces the expression to a known node type (i.e. not an Extension node)
- or simply returns the expression if it is already a known type.
-
- The reduced expression.
-
-
-
- Creates a representation of the Expression.
-
- A representation of the Expression.
-
-
-
- Writes a representation of the to a .
-
- A that will be used to build the string representation.
-
-
-
- Helper used for ensuring we only return 1 instance of a ReadOnlyCollection of T.
-
- This is called from various methods where we internally hold onto an IList of T
- or a readonly collection of T. We check to see if we've already returned a
- readonly collection of T and if so simply return the other one. Otherwise we do
- a thread-safe replacement of the list w/ a readonly collection which wraps it.
-
- Ultimately this saves us from having to allocate a ReadOnlyCollection for our
- data types because the compiler is capable of going directly to the IList of T.
-
-
-
-
- Helper used for ensuring we only return 1 instance of a ReadOnlyCollection of T.
-
- This is similar to the ReturnReadOnly of T. This version supports nodes which hold
- onto multiple Expressions where one is typed to object. That object field holds either
- an expression or a ReadOnlyCollection of Expressions. When it holds a ReadOnlyCollection
- the IList which backs it is a ListArgumentProvider which uses the Expression which
- implements IArgumentProvider to get 2nd and additional values. The ListArgumentProvider
- continues to hold onto the 1st expression.
-
- This enables users to get the ReadOnlyCollection w/o it consuming more memory than if
- it was just an array. Meanwhile The DLR internally avoids accessing which would force
- the readonly collection to be created resulting in a typical memory savings.
-
-
-
-
- Helper which is used for specialized subtypes which use ReturnReadOnly(ref object, ...).
- This is the reverse version of ReturnReadOnly which takes an IArgumentProvider.
-
- This is used to return the 1st argument. The 1st argument is typed as object and either
- contains a ReadOnlyCollection or the Expression. We check for the Expression and if it's
- present we return that, otherwise we return the 1st element of the ReadOnlyCollection.
-
-
-
-
- Creates a that contains two expressions and has no variables.
-
- The first expression in the block.
- The second expression in the block.
- The created .
-
-
-
- Creates a that contains three expressions and has no variables.
-
- The first expression in the block.
- The second expression in the block.
- The third expression in the block.
- The created .
-
-
-
- Creates a that contains four expressions and has no variables.
-
- The first expression in the block.
- The second expression in the block.
- The third expression in the block.
- The fourth expression in the block.
- The created .
-
-
-
- Creates a that contains five expressions and has no variables.
-
- The first expression in the block.
- The second expression in the block.
- The third expression in the block.
- The fourth expression in the block.
- The fifth expression in the block.
- The created .
-
-
-
- Creates a that contains the given expressions and has no variables.
-
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given expressions and has no variables.
-
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given expressions, has no variables and has specific result type.
-
- The result type of the block.
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given expressions, has no variables and has specific result type.
-
- The result type of the block.
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given variables and expressions.
-
- The variables in the block.
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given variables and expressions.
-
- The result type of the block.
- The variables in the block.
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given variables and expressions.
-
- The variables in the block.
- The expressions in the block.
- The created .
-
-
-
- Creates a that contains the given variables and expressions.
-
- The result type of the block.
- The variables in the block.
- The expressions in the block.
- The created .
-
-
-
- Creates a with the specified span.
-
- The that represents the source file.
- The start line of this . Must be greater than 0.
- The start column of this . Must be greater than 0.
- The end line of this . Must be greater or equal than the start line.
- The end column of this . If the end line is the same as the start line, it must be greater or equal than the start column. In any case, must be greater than 0.
- An instance of .
-
-
-
- Creates a for clearing a sequence point.
-
- The that represents the source file.
- An instance of for clearning a sequence point.
-
-
-
- Creates a representing a try block with a fault block and no catch statements.
-
- The body of the try block.
- The body of the fault block.
- The created .
-
-
-
- Creates a representing a try block with a finally block and no catch statements.
-
- The body of the try block.
- The body of the finally block.
- The created .
-
-
-
- Creates a representing a try block with any number of catch statements and neither a fault nor finally block.
-
- The body of the try block.
- The array of zero or more s representing the catch statements to be associated with the try block.
- The created .
-
-
-
- Creates a representing a try block with any number of catch statements and a finally block.
-
- The body of the try block.
- The body of the finally block.
- The array of zero or more s representing the catch statements to be associated with the try block.
- The created .
-
-
-
- Creates a representing a try block with the specified elements.
-
- The result type of the try expression. If null, bodh and all handlers must have identical type.
- The body of the try block.
- The body of the finally block. Pass null if the try block has no finally block associated with it.
- The body of the t block. Pass null if the try block has no fault block associated with it.
- A collection of s representing the catch statements to be associated with the try block.
- The created .
-
-
- Creates a where the member is a field or property.
- A that has the property equal to and the and properties set to the specified values.
- A that represents a field or property to set the property equal to.
- An array of objects to use to populate the collection.
-
- is null. -or-One or more elements of is null.
-
- does not represent a field or property.-or-The or of the field or property that represents does not implement .
-
-
- Creates a where the member is a field or property.
- A that has the property equal to and the and properties set to the specified values.
- A that represents a field or property to set the property equal to.
- An that contains objects to use to populate the collection.
-
- is null. -or-One or more elements of is null.
-
- does not represent a field or property.-or-The or of the field or property that represents does not implement .
-
-
- Creates a object based on a specified property accessor method.
- A that has the property equal to , the property set to the that represents the property accessed in , and populated with the elements of .
- A that represents a property accessor method.
- An array of objects to use to populate the collection.
-
- is null. -or-One or more elements of is null.
-
- does not represent a property accessor method.-or-The of the property that the method represented by accesses does not implement .
-
-
- Creates a based on a specified property accessor method.
- A that has the property equal to , the property set to the that represents the property accessed in , and populated with the elements of .
- A that represents a property accessor method.
- An that contains objects to use to populate the collection.
-
- is null. -or-One or more elements of are null.
-
- does not represent a property accessor method.-or-The of the property that the method represented by accesses does not implement .
-
Creates a .
@@ -795,54 +1001,6 @@
A to set the property equal to.
A for which the property is equal to and for which the and properties are set to the specified values.
-
-
- Creates a new that represents calling the specified constructor that takes no arguments.
-
- The to set the property equal to.
- A that has the property equal to and the property set to the specified value.
-
-
-
- Creates a new that represents calling the specified constructor that takes no arguments.
-
- The to set the property equal to.
- An array of objects to use to populate the Arguments collection.
- A that has the property equal to and the and properties set to the specified value.
-
-
-
- Creates a new that represents calling the specified constructor that takes no arguments.
-
- The to set the property equal to.
- An of objects to use to populate the Arguments collection.
- A that has the property equal to and the and properties set to the specified value.
-
-
-
- Creates a new that represents calling the specified constructor with the specified arguments. The members that access the constructor initialized fields are specified.
-
- The to set the property equal to.
- An of objects to use to populate the Arguments collection.
- An of objects to use to populate the Members collection.
- A that has the property equal to and the , and properties set to the specified value.
-
-
-
- Creates a new that represents calling the specified constructor with the specified arguments. The members that access the constructor initialized fields are specified.
-
- The to set the property equal to.
- An of objects to use to populate the Arguments collection.
- An Array of objects to use to populate the Members collection.
- A that has the property equal to and the , and properties set to the specified value.
-
-
-
- Creates a that represents calling the parameterless constructor of the specified type.
-
- A that has a constructor that takes no arguments.
- A that has the property equal to New and the Constructor property set to the ConstructorInfo that represents the parameterless constructor of the specified type.
-
Creates a accessing a field.
@@ -933,67 +1091,6 @@
The value to be assigned to .
The created .
-
-
- Creates a that uses a method named "Add" to add elements to a collection.
-
- A to set the property equal to.
- An array of objects to use to populate the collection.
- A that has the property equal to ListInit and the property set to the specified value.
-
-
-
- Creates a that uses a method named "Add" to add elements to a collection.
-
- A to set the property equal to.
- An that contains objects to use to populate the collection.
- A that has the property equal to ListInit and the property set to the specified value.
-
-
-
- Creates a that uses a specified method to add elements to a collection.
-
- A to set the property equal to.
- A that represents an instance method named "Add" (case insensitive), that adds an element to a collection.
- An array of objects to use to populate the collection.
- A that has the property equal to ListInit and the property set to the specified value.
-
-
-
- Creates a that uses a specified method to add elements to a collection.
-
- A to set the property equal to.
- A that represents an instance method named "Add" (case insensitive), that adds an element to a collection.
- An that contains objects to use to populate the Initializers collection.
- A that has the property equal to ListInit and the property set to the specified value.
-
-
-
- Creates a that uses specified objects to initialize a collection.
-
- A to set the property equal to.
- An array that contains objects to use to populate the collection.
-
- A that has the property equal to ListInit
- and the and properties set to the specified values.
-
-
- The property of must represent a type that implements .
- The property of the resulting is equal to newExpression.Type.
-
-
-
-
- Creates a that uses specified objects to initialize a collection.
-
- A to set the property equal to.
- An that contains objects to use to populate the collection.
- An that contains objects to use to populate the collection.
-
- The property of must represent a type that implements .
- The property of the resulting is equal to newExpression.Type.
-
-
Creates a .
@@ -1059,36 +1156,6 @@
If no custom type is provided, all branches must have the same type - resultType.
-
-
- Creates a node that can be used to identify a parameter or a variable in an expression tree.
-
- The type of the parameter or variable.
- A node with the specified name and type.
-
-
-
- Creates a node that can be used to identify a parameter or a variable in an expression tree.
-
- The type of the parameter or variable.
- A node with the specified name and type.
-
-
-
- Creates a node that can be used to identify a parameter or a variable in an expression tree.
-
- The type of the parameter or variable.
- The name of the parameter or variable, used for debugging or pretty printing purpose only.
- A node with the specified name and type.
-
-
-
- Creates a node that can be used to identify a parameter or a variable in an expression tree.
-
- The type of the parameter or variable.
- The name of the parameter or variable, used for debugging or pretty printing purpose only.
- A node with the specified name and type.
-
Creates an Expression{T} given the delegate type. Caches the
@@ -1310,24 +1377,139 @@
As with Func, the last argument is the return type. It can be set
to System.Void to produce an Action.
-
+
- Creates an empty expression that has type.
+ Creates a that contains two expressions and has no variables.
-
- A that has the property equal to
- and the property set to .
-
+ The first expression in the block.
+ The second expression in the block.
+ The created .
-
+
- Creates a that has the property set to the specified type.
+ Creates a that contains three expressions and has no variables.
- A to set the property equal to.
-
- A that has the property equal to
- and the property set to the specified type.
-
+ The first expression in the block.
+ The second expression in the block.
+ The third expression in the block.
+ The created .
+
+
+
+ Creates a that contains four expressions and has no variables.
+
+ The first expression in the block.
+ The second expression in the block.
+ The third expression in the block.
+ The fourth expression in the block.
+ The created .
+
+
+
+ Creates a that contains five expressions and has no variables.
+
+ The first expression in the block.
+ The second expression in the block.
+ The third expression in the block.
+ The fourth expression in the block.
+ The fifth expression in the block.
+ The created .
+
+
+
+ Creates a that contains the given expressions and has no variables.
+
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given expressions and has no variables.
+
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given expressions, has no variables and has specific result type.
+
+ The result type of the block.
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given expressions, has no variables and has specific result type.
+
+ The result type of the block.
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given variables and expressions.
+
+ The variables in the block.
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given variables and expressions.
+
+ The result type of the block.
+ The variables in the block.
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given variables and expressions.
+
+ The variables in the block.
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a that contains the given variables and expressions.
+
+ The result type of the block.
+ The variables in the block.
+ The expressions in the block.
+ The created .
+
+
+
+ Creates a new array expression of the specified type from the provided initializers.
+
+ A Type that represents the element type of the array.
+ The expressions used to create the array elements.
+ An instance of the .
+
+
+
+ Creates a new array expression of the specified type from the provided initializers.
+
+ A Type that represents the element type of the array.
+ The expressions used to create the array elements.
+ An instance of the .
+
+
+
+ Creates a that represents creating an array that has a specified rank.
+
+ A that represents the element type of the array.
+ An array that contains Expression objects to use to populate the Expressions collection.
+ A that has the property equal to type and the property set to the specified value.
+
+
+
+ Creates a that represents creating an array that has a specified rank.
+
+ A that represents the element type of the array.
+ An IEnumerable{T} that contains Expression objects to use to populate the Expressions collection.
+ A that has the property equal to type and the property set to the specified value.
@@ -1378,6 +1560,46 @@
The created .
must be non-null and match the type of (if it is supplied).
+
+
+ Creates an instance of .
+
+ A to set the equal to.
+ A that has the property set to the specified value.
+
+
+
+ Creates an instance of .
+
+ A to set the equal to.
+ A to set the equal to.
+ A that has the
+ and properties set to the specified value.
+
+
+
+ Creates an instance of .
+
+ A to set the equal to.
+ A to set the equal to.
+ A to set the equal to.
+ A that has the
+ and
+ and properties set to the specified value.
+
+
+
+ Creates an instance of .
+
+ A to set the equal to.
+ A to set the equal to.
+ A to set the equal to.
+ A to set the equal to.
+ A that has the
+ and
+ and
+ and properties set to the specified value.
+
Creates a SwitchCase for use in a .
@@ -1394,88 +1616,6 @@
The test values of the case.
The created SwitchCase.
-
-
- Creates a that has the property set to the specified value. .
-
- An to set the property equal to.
-
- A that has the property equal to
- and the property set to the specified value.
-
-
-
-
- Creates a that has the
- and properties set to the specified values. .
-
- An to set the property equal to.
- A to set the property equal to.
-
- A that has the property equal to
- and the and
- properties set to the specified values.
-
-
-
-
- Creates a representing a label with void type and no name.
-
- The new .
-
-
-
- Creates a representing a label with void type and the given name.
-
- The name of the label.
- The new .
-
-
-
- Creates a representing a label with the given type.
-
- The type of value that is passed when jumping to the label.
- The new .
-
-
-
- Creates a representing a label with the given type and name.
-
- The type of value that is passed when jumping to the label.
- The name of the label.
- The new .
-
-
-
- Creates a representing a label with no default value.
-
- The which this will be associated with.
- A with no default value.
-
-
-
- Creates a representing a label with the given default value.
-
- The which this will be associated with.
- The value of this when the label is reached through normal control flow.
- A with the given default value.
-
-
-
- Creates an ElementInit expression that represents the initialization of a list.
-
- The for the list's Add method.
- An array containing the Expressions to be used to initialize the list.
- The created ElementInit expression.
-
-
-
- Creates an ElementInit expression that represents the initialization of a list.
-
- The for the list's Add method.
- An containing elements to initialize the list.
- The created ElementInit expression.
-
Creates a that represents an assignment operation.
@@ -2475,6 +2615,493 @@
An Expression to set the Right property equal to.
A BinaryExpression that has the NodeType property equal to ArrayIndex and the Left and Right properties set to the specified values.
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The type of the delegate used by the .
+ The runtime binder for the dynamic operation.
+ The arguments to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ DelegateType,
+ Binder, and
+ Arguments set to the specified values.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The type of the delegate used by the .
+ The runtime binder for the dynamic operation.
+ The arguments to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ DelegateType,
+ Binder, and
+ Arguments set to the specified values.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided and one argument.
+
+ The type of the delegate used by the .
+ The runtime binder for the dynamic operation.
+ The argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ DelegateType,
+ Binder, and
+ Arguments set to the specified values.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided and two arguments.
+
+ The type of the delegate used by the .
+ The runtime binder for the dynamic operation.
+ The first argument to the dynamic operation.
+ The second argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ DelegateType,
+ Binder, and
+ Arguments set to the specified values.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided and three arguments.
+
+ The type of the delegate used by the .
+ The runtime binder for the dynamic operation.
+ The first argument to the dynamic operation.
+ The second argument to the dynamic operation.
+ The third argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ DelegateType,
+ Binder, and
+ Arguments set to the specified values.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided and four arguments.
+
+ The type of the delegate used by the .
+ The runtime binder for the dynamic operation.
+ The first argument to the dynamic operation.
+ The second argument to the dynamic operation.
+ The third argument to the dynamic operation.
+ The fourth argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ DelegateType,
+ Binder, and
+ Arguments set to the specified values.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The runtime binder for the dynamic operation.
+ The result type of the dynamic expression.
+ The arguments to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ Binder and
+ Arguments set to the specified values.
+
+
+ The DelegateType property of the
+ result will be inferred from the types of the arguments and the specified return type.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The runtime binder for the dynamic operation.
+ The result type of the dynamic expression.
+ The first argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ Binder and
+ Arguments set to the specified values.
+
+
+ The DelegateType property of the
+ result will be inferred from the types of the arguments and the specified return type.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The runtime binder for the dynamic operation.
+ The result type of the dynamic expression.
+ The first argument to the dynamic operation.
+ The second argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ Binder and
+ Arguments set to the specified values.
+
+
+ The DelegateType property of the
+ result will be inferred from the types of the arguments and the specified return type.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The runtime binder for the dynamic operation.
+ The result type of the dynamic expression.
+ The first argument to the dynamic operation.
+ The second argument to the dynamic operation.
+ The third argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ Binder and
+ Arguments set to the specified values.
+
+
+ The DelegateType property of the
+ result will be inferred from the types of the arguments and the specified return type.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The runtime binder for the dynamic operation.
+ The result type of the dynamic expression.
+ The first argument to the dynamic operation.
+ The second argument to the dynamic operation.
+ The third argument to the dynamic operation.
+ The fourth argument to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ Binder and
+ Arguments set to the specified values.
+
+
+ The DelegateType property of the
+ result will be inferred from the types of the arguments and the specified return type.
+
+
+
+
+ Creates a that represents a dynamic operation bound by the provided .
+
+ The runtime binder for the dynamic operation.
+ The result type of the dynamic expression.
+ The arguments to the dynamic operation.
+
+ A that has equal to
+ Dynamic and has the
+ Binder and
+ Arguments set to the specified values.
+
+
+ The DelegateType property of the
+ result will be inferred from the types of the arguments and the specified return type.
+
+
+
+
+ Creates a that represents the recursive initialization of members of a field or property.
+
+ The to set the property equal to.
+ An array of objects to use to populate the collection.
+ A that has the property equal to and the and properties set to the specified values.
+
+
+
+ Creates a that represents the recursive initialization of members of a field or property.
+
+ The to set the property equal to.
+ An that contains objects to use to populate the collection.
+ A that has the property equal to and the and properties set to the specified values.
+
+
+
+ Creates a that represents the recursive initialization of members of a member that is accessed by using a property accessor method.
+
+ The that represents a property accessor method.
+ An that contains objects to use to populate the collection.
+
+ A that has the property equal to ,
+ the Member property set to the that represents the property accessed in ,
+ and properties set to the specified values.
+
+
+
+
+ Creates a that represents the recursive initialization of members of a member that is accessed by using a property accessor method.
+
+ The that represents a property accessor method.
+ An that contains objects to use to populate the collection.
+
+ A that has the property equal to ,
+ the Member property set to the that represents the property accessed in ,
+ and properties set to the specified values.
+
+
+
+
+ Creates an that
+ applies a delegate or lambda expression to a list of argument expressions.
+
+
+ An that
+ applies the specified delegate or lambda expression to the provided arguments.
+
+
+ An that represents the delegate
+ or lambda expression to be applied.
+
+
+ An array of objects
+ that represent the arguments that the delegate or lambda expression is applied to.
+
+
+ is null.
+
+ .Type does not represent a delegate type or an .-or-The property of an element of is not assignable to the type of the corresponding parameter of the delegate represented by .
+
+ does not contain the same number of elements as the list of parameters for the delegate represented by .
+
+
+
+ Creates an that
+ applies a delegate or lambda expression to a list of argument expressions.
+
+
+ An that
+ applies the specified delegate or lambda expression to the provided arguments.
+
+
+ An that represents the delegate
+ or lambda expression to be applied.
+
+
+ An of objects
+ that represent the arguments that the delegate or lambda expression is applied to.
+
+
+ is null.
+
+ .Type does not represent a delegate type or an .-or-The property of an element of is not assignable to the type of the corresponding parameter of the delegate represented by .
+
+ does not contain the same number of elements as the list of parameters for the delegate represented by .
+
+
+
+ Gets the delegate's Invoke method; used by InvocationExpression.
+
+ The expression to be invoked.
+
+
+
+ Creates a representing a try block with a fault block and no catch statements.
+
+ The body of the try block.
+ The body of the fault block.
+ The created .
+
+
+
+ Creates a representing a try block with a finally block and no catch statements.
+
+ The body of the try block.
+ The body of the finally block.
+ The created .
+
+
+
+ Creates a representing a try block with any number of catch statements and neither a fault nor finally block.
+
+ The body of the try block.
+ The array of zero or more s representing the catch statements to be associated with the try block.
+ The created .
+
+
+
+ Creates a representing a try block with any number of catch statements and a finally block.
+
+ The body of the try block.
+ The body of the finally block.
+ The array of zero or more s representing the catch statements to be associated with the try block.
+ The created .
+
+
+
+ Creates a representing a try block with the specified elements.
+
+ The result type of the try expression. If null, bodh and all handlers must have identical type.
+ The body of the try block.
+ The body of the finally block. Pass null if the try block has no finally block associated with it.
+ The body of the t block. Pass null if the try block has no fault block associated with it.
+ A collection of s representing the catch statements to be associated with the try block.
+ The created .
+
+
+ Creates a .
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ An array of objects to use to populate the collection.
+
+ or is null.
+ The property of an element of does not represent a member of the type that .Type represents.
+
+
+ Creates a .
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ An that contains objects to use to populate the collection.
+
+ or is null.
+ The property of an element of does not represent a member of the type that .Type represents.
+
+
+
+ Creates a representing a label with no default value.
+
+ The which this will be associated with.
+ A with no default value.
+
+
+
+ Creates a representing a label with the given default value.
+
+ The which this will be associated with.
+ The value of this when the label is reached through normal control flow.
+ A with the given default value.
+
+
+
+ Creates a with the specified span.
+
+ The that represents the source file.
+ The start line of this . Must be greater than 0.
+ The start column of this . Must be greater than 0.
+ The end line of this . Must be greater or equal than the start line.
+ The end column of this . If the end line is the same as the start line, it must be greater or equal than the start column. In any case, must be greater than 0.
+ An instance of .
+
+
+
+ Creates a for clearing a sequence point.
+
+ The that represents the source file.
+ An instance of for clearning a sequence point.
+
+
+
+ Creates a new that represents calling the specified constructor that takes no arguments.
+
+ The to set the property equal to.
+ A that has the property equal to and the property set to the specified value.
+
+
+
+ Creates a new that represents calling the specified constructor that takes no arguments.
+
+ The to set the property equal to.
+ An array of objects to use to populate the Arguments collection.
+ A that has the property equal to and the and properties set to the specified value.
+
+
+
+ Creates a new that represents calling the specified constructor that takes no arguments.
+
+ The to set the property equal to.
+ An of objects to use to populate the Arguments collection.
+ A that has the property equal to and the and properties set to the specified value.
+
+
+
+ Creates a new that represents calling the specified constructor with the specified arguments. The members that access the constructor initialized fields are specified.
+
+ The to set the property equal to.
+ An of objects to use to populate the Arguments collection.
+ An of objects to use to populate the Members collection.
+ A that has the property equal to and the , and properties set to the specified value.
+
+
+
+ Creates a new that represents calling the specified constructor with the specified arguments. The members that access the constructor initialized fields are specified.
+
+ The to set the property equal to.
+ An of objects to use to populate the Arguments collection.
+ An Array of objects to use to populate the Members collection.
+ A that has the property equal to and the , and properties set to the specified value.
+
+
+
+ Creates a that represents calling the parameterless constructor of the specified type.
+
+ A that has a constructor that takes no arguments.
+ A that has the property equal to New and the Constructor property set to the ConstructorInfo that represents the parameterless constructor of the specified type.
+
+
+ Creates a where the member is a field or property.
+ A that has the property equal to and the and properties set to the specified values.
+ A that represents a field or property to set the property equal to.
+ An array of objects to use to populate the collection.
+
+ is null. -or-One or more elements of is null.
+
+ does not represent a field or property.-or-The or of the field or property that represents does not implement .
+
+
+ Creates a where the member is a field or property.
+ A that has the property equal to and the and properties set to the specified values.
+ A that represents a field or property to set the property equal to.
+ An that contains objects to use to populate the collection.
+
+ is null. -or-One or more elements of is null.
+
+ does not represent a field or property.-or-The or of the field or property that represents does not implement .
+
+
+ Creates a object based on a specified property accessor method.
+ A that has the property equal to , the property set to the that represents the property accessed in , and populated with the elements of .
+ A that represents a property accessor method.
+ An array of objects to use to populate the collection.
+
+ is null. -or-One or more elements of is null.
+
+ does not represent a property accessor method.-or-The of the property that the method represented by accesses does not implement .
+
+
+ Creates a based on a specified property accessor method.
+ A that has the property equal to , the property set to the that represents the property accessed in , and populated with the elements of .
+ A that represents a property accessor method.
+ An that contains objects to use to populate the collection.
+
+ is null. -or-One or more elements of are null.
+
+ does not represent a property accessor method.-or-The of the property that the method represented by accesses does not implement .
+
Creates a , given an operand, by calling the appropriate factory method.
@@ -2825,77 +3452,411 @@
A that represents the implementing method.
A that represents the resultant expression.
-
+
- Creates an that
- applies a delegate or lambda expression to a list of argument expressions.
+ Creates a with the given body.
+ The body of the loop.
+ The created .
+
+
+
+ Creates a with the given body and break target.
+
+ The body of the loop.
+ The break target used by the loop body.
+ The created .
+
+
+
+ Creates a with the given body.
+
+ The body of the loop.
+ The break target used by the loop body.
+ The continue target used by the loop body.
+ The created .
+
+
+
+ Creates a that uses a method named "Add" to add elements to a collection.
+
+ A to set the property equal to.
+ An array of objects to use to populate the collection.
+ A that has the property equal to ListInit and the property set to the specified value.
+
+
+
+ Creates a that uses a method named "Add" to add elements to a collection.
+
+ A to set the property equal to.
+ An that contains objects to use to populate the collection.
+ A that has the property equal to ListInit and the property set to the specified value.
+
+
+
+ Creates a that uses a specified method to add elements to a collection.
+
+ A to set the property equal to.
+ A that represents an instance method named "Add" (case insensitive), that adds an element to a collection.
+ An array of objects to use to populate the collection.
+ A that has the property equal to ListInit and the property set to the specified value.
+
+
+
+ Creates a that uses a specified method to add elements to a collection.
+
+ A to set the property equal to.
+ A that represents an instance method named "Add" (case insensitive), that adds an element to a collection.
+ An that contains objects to use to populate the Initializers collection.
+ A that has the property equal to ListInit and the property set to the specified value.
+
+
+
+ Creates a that uses specified objects to initialize a collection.
+
+ A to set the property equal to.
+ An array that contains objects to use to populate the collection.
- An that
- applies the specified delegate or lambda expression to the provided arguments.
+ A that has the property equal to ListInit
+ and the and properties set to the specified values.
-
- An that represents the delegate
- or lambda expression to be applied.
-
-
- An array of objects
- that represent the arguments that the delegate or lambda expression is applied to.
-
-
- is null.
-
- .Type does not represent a delegate type or an .-or-The property of an element of is not assignable to the type of the corresponding parameter of the delegate represented by .
-
- does not contain the same number of elements as the list of parameters for the delegate represented by .
+
+ The property of must represent a type that implements .
+ The property of the resulting is equal to newExpression.Type.
+
-
+
- Creates an that
- applies a delegate or lambda expression to a list of argument expressions.
+ Creates a that uses specified objects to initialize a collection.
+ A to set the property equal to.
+ An that contains objects to use to populate the collection.
+ An that contains objects to use to populate the collection.
+
+ The property of must represent a type that implements .
+ The property of the resulting is equal to newExpression.Type.
+
+
+
+
+ Creates a representing a label with void type and no name.
+
+ The new .
+
+
+
+ Creates a representing a label with void type and the given name.
+
+ The name of the label.
+ The new .
+
+
+
+ Creates a representing a label with the given type.
+
+ The type of value that is passed when jumping to the label.
+ The new .
+
+
+
+ Creates a representing a label with the given type and name.
+
+ The type of value that is passed when jumping to the label.
+ The name of the label.
+ The new .
+
+
+
+ Creates a that has the property set to the specified value. .
+
+ An to set the property equal to.
- An that
- applies the specified delegate or lambda expression to the provided arguments.
+ A that has the property equal to
+ and the property set to the specified value.
-
- An that represents the delegate
- or lambda expression to be applied.
-
-
- An of objects
- that represent the arguments that the delegate or lambda expression is applied to.
-
-
- is null.
-
- .Type does not represent a delegate type or an .-or-The property of an element of is not assignable to the type of the corresponding parameter of the delegate represented by .
-
- does not contain the same number of elements as the list of parameters for the delegate represented by .
-
+
- Gets the delegate's Invoke method; used by InvocationExpression.
+ Creates a that has the
+ and properties set to the specified values. .
- The expression to be invoked.
+ An to set the property equal to.
+ A to set the property equal to.
+
+ A that has the property equal to
+ and the and
+ properties set to the specified values.
+
-
- Creates a .
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- An array of objects to use to populate the collection.
-
- or is null.
- The property of an element of does not represent a member of the type that .Type represents.
+
+
+ Creates a .
+
+ An to set the property equal to.
+ An to set the property equal to.
+ An to set the property equal to.
+ A that has the property equal to
+ and the , ,
+ and properties set to the specified values.
-
- Creates a .
- A that has the property equal to and the and properties set to the specified values.
- A to set the property equal to.
- An that contains objects to use to populate the collection.
-
- or is null.
- The property of an element of does not represent a member of the type that .Type represents.
+
+
+ Creates a .
+
+ An to set the property equal to.
+ An to set the property equal to.
+ An to set the property equal to.
+ A to set the property equal to.
+ A that has the property equal to
+ and the , ,
+ and properties set to the specified values.
+ This method allows explicitly unifying the result type of the conditional expression in cases where the types of
+ and expressions are not equal. Types of both and must be implicitly
+ reference assignable to the result type. The is allowed to be .
+
+
+
+ Creates a .
+
+ An to set the property equal to.
+ An to set the property equal to.
+ A that has the property equal to
+ and the , ,
+ properties set to the specified values. The property is set to default expression and
+ the type of the resulting returned by this method is .
+
+
+
+ Creates a .
+
+ An to set the property equal to.
+ An to set the property equal to.
+ An to set the property equal to.
+ A that has the property equal to
+ and the , ,
+ and properties set to the specified values. The type of the resulting
+ returned by this method is .
+
+
+
+ Creates a representing a break statement.
+
+ The that the will jump to.
+
+ A with equal to Break,
+ the property set to , and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a break statement. The value passed to the label upon jumping can be specified.
+
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+
+ A with equal to Break,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a break statement with the specified type.
+
+ The that the will jump to.
+ An to set the property equal to.
+
+ A with equal to Break,
+ the property set to ,
+ and the property set to .
+
+
+
+
+ Creates a representing a break statement with the specified type.
+ The value passed to the label upon jumping can be specified.
+
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+ An to set the property equal to.
+
+ A with equal to Break,
+ the property set to ,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a continue statement.
+
+ The that the will jump to.
+
+ A with equal to Continue,
+ the property set to ,
+ and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a continue statement with the specified type.
+
+ The that the will jump to.
+ An to set the property equal to.
+
+ A with equal to Continue,
+ the property set to ,
+ the property set to ,
+ and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a return statement.
+
+ The that the will jump to.
+
+ A with equal to Return,
+ the property set to ,
+ and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a return statement with the specified type.
+
+ The that the will jump to.
+ An to set the property equal to.
+
+ A with equal to Return,
+ the property set to ,
+ the property set to ,
+ and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a return statement. The value passed to the label upon jumping can be specified.
+
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+
+ A with equal to Continue,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a return statement with the specified type.
+ The value passed to the label upon jumping can be specified.
+
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+ An to set the property equal to.
+
+ A with equal to Continue,
+ the property set to ,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a goto.
+
+ The that the will jump to.
+
+ A with equal to Goto,
+ the property set to the specified value,
+ and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a goto with the specified type.
+
+ The that the will jump to.
+ An to set the property equal to.
+
+ A with equal to Goto,
+ the property set to the specified value,
+ the property set to ,
+ and a null value to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a goto. The value passed to the label upon jumping can be specified.
+
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+
+ A with equal to Goto,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a goto with the specified type.
+ The value passed to the label upon jumping can be specified.
+
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+ An to set the property equal to.
+
+ A with equal to Goto,
+ the property set to ,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a representing a jump of the specified .
+ The value passed to the label upon jumping can also be specified.
+
+ The of the .
+ The that the will jump to.
+ The value that will be passed to the associated label upon jumping.
+ An to set the property equal to.
+
+ A with equal to ,
+ the property set to ,
+ the property set to ,
+ and to be passed to the target label upon jumping.
+
+
+
+
+ Creates a node that can be used to identify a parameter or a variable in an expression tree.
+
+ The type of the parameter or variable.
+ A node with the specified name and type.
+
+
+
+ Creates a node that can be used to identify a parameter or a variable in an expression tree.
+
+ The type of the parameter or variable.
+ A node with the specified name and type.
+
+
+
+ Creates a node that can be used to identify a parameter or a variable in an expression tree.
+
+ The type of the parameter or variable.
+ The name of the parameter or variable, used for debugging or pretty printing purpose only.
+ A node with the specified name and type.
+
+
+
+ Creates a node that can be used to identify a parameter or a variable in an expression tree.
+
+ The type of the parameter or variable.
+ The name of the parameter or variable, used for debugging or pretty printing purpose only.
+ A node with the specified name and type.
@@ -2959,336 +3920,327 @@
An of objects that are used to index the property.
The created .
-
+
- Creates a .
+ Creates an ElementInit expression that represents the initialization of a list.
- An to set the property equal to.
- An to set the property equal to.
- An to set the property equal to.
- A that has the property equal to
- and the , ,
- and properties set to the specified values.
+ The for the list's Add method.
+ An array containing the Expressions to be used to initialize the list.
+ The created ElementInit expression.
-
+
- Creates a .
+ Creates an ElementInit expression that represents the initialization of a list.
- An to set the property equal to.
- An to set the property equal to.
- An to set the property equal to.
- A to set the property equal to.
- A that has the property equal to
- and the , ,
- and properties set to the specified values.
- This method allows explicitly unifying the result type of the conditional expression in cases where the types of
- and expressions are not equal. Types of both and must be implicitly
- reference assignable to the result type. The is allowed to be .
+ The for the list's Add method.
+ An containing elements to initialize the list.
+ The created ElementInit expression.
-
-
- Creates a .
-
- An to set the property equal to.
- An to set the property equal to.
- A that has the property equal to
- and the , ,
- properties set to the specified values. The property is set to default expression and
- the type of the resulting returned by this method is .
+
+ Creates a that represents a call to a static method that takes one argument.
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ The that represents the first argument.
+
+ is null.
-
-
- Creates a .
-
- An to set the property equal to.
- An to set the property equal to.
- An to set the property equal to.
- A that has the property equal to
- and the , ,
- and properties set to the specified values. The type of the resulting
- returned by this method is .
+
+ Creates a that represents a call to a static method that takes two arguments.
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ The that represents the first argument.
+ The that represents the second argument.
+
+ is null.
-
-
- Creates a new array expression of the specified type from the provided initializers.
-
- A Type that represents the element type of the array.
- The expressions used to create the array elements.
- An instance of the .
+
+ Creates a that represents a call to a static method that takes three arguments.
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ The that represents the first argument.
+ The that represents the second argument.
+ The that represents the third argument.
+
+ is null.
-
-
- Creates a new array expression of the specified type from the provided initializers.
-
- A Type that represents the element type of the array.
- The expressions used to create the array elements.
- An instance of the .
+
+ Creates a that represents a call to a static method that takes four arguments.
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ The that represents the first argument.
+ The that represents the second argument.
+ The that represents the third argument.
+ The that represents the fourth argument.
+
+ is null.
-
-
- Creates a that represents creating an array that has a specified rank.
-
- A that represents the element type of the array.
- An array that contains Expression objects to use to populate the Expressions collection.
- A that has the property equal to type and the property set to the specified value.
+
+ Creates a that represents a call to a static method that takes five arguments.
+ A that has the property equal to and the and properties set to the specified values.
+ A to set the property equal to.
+ The that represents the first argument.
+ The that represents the second argument.
+ The that represents the third argument.
+ The that represents the fourth argument.
+ The that represents the fifth argument.
+
+ is null.
+ A that has the property equal to and the and properties set to the specified values.
-
-
- Creates a that represents creating an array that has a specified rank.
-
- A that represents the element type of the array.
- An IEnumerable{T} that contains Expression objects to use to populate the Expressions collection.
- A that has the property equal to type and the property set to the specified value.
+
+
+ Creates a that represents a call to a static (Shared in Visual Basic) method.
+
+ The that represents the target method.
+ The array of one or more of that represents the call arguments.
+ A that has the property equal to and the and properties set to the specified values.
-
-
- Creates an instance of .
-
- A to set the equal to.
- A that has the property set to the specified value.
+
+
+ Creates a that represents a call to a static (Shared in Visual Basic) method.
+
+ The that represents the target method.
+ A collection of that represents the call arguments.
+ A that has the property equal to and the and properties set to the specified values.
-
-
- Creates an instance of .
-
- A to set the equal to.
- A to set the equal to.
- A that has the
- and properties set to the specified value.
+
+
+ Creates a that represents a call to a method that takes no arguments.
+
+ An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
+ The that represents the target method.
+ A that has the property equal to and the and properties set to the specified values.
-
-
- Creates an instance of .
-
- A to set the equal to.
- A to set the equal to.
- A to set the equal to.
- A that has the
- and
- and properties set to the specified value.
+
+
+ Creates a that represents a method call.
+
+ An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
+ The that represents the target method.
+ An array of one or more of that represents the call arguments.
+ A that has the property equal to and the and properties set to the specified values.
-
-
- Creates an instance of .
-
- A to set the equal to.
- A to set the equal to.
- A to set the equal to.
- A to set the equal to.
- A that has the
- and
- and
- and properties set to the specified value.
+
+
+ Creates a that represents a call to a method that takes two arguments.
+
+ An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
+ The that represents the target method.
+ The that represents the first argument.
+ The that represents the second argument.
+ A that has the property equal to and the and properties set to the specified values.
-
+
+
+ Creates a that represents a call to a method that takes three arguments.
+
+ An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
+ The that represents the target method.
+ The that represents the first argument.
+ The that represents the second argument.
+ The that represents the third argument.
+ A that has the property equal to and the and properties set to the specified values.
+
+
+ Creates a that represents a call to an instance method by calling the appropriate factory method.
+ A that has the property equal to , the property equal to , set to the that represents the specified instance method, and set to the specified arguments.
+ An whose property value will be searched for a specific method.
+ The name of the method.
+
+ An array of objects that specify the type parameters of the generic method.
+ This argument should be null when specifies a non-generic method.
+
+ An array of objects that represents the arguments to the method.
+
+ or is null.
+ No method whose name is , whose type parameters match , and whose parameter types match is found in .Type or its base types.-or-More than one method whose name is , whose type parameters match , and whose parameter types match is found in .Type or its base types.
+
+
+ Creates a that represents a call to a static (Shared in Visual Basic) method by calling the appropriate factory method.
+ A that has the property equal to , the property set to the that represents the specified static (Shared in Visual Basic) method, and the property set to the specified arguments.
+ The that specifies the type that contains the specified static (Shared in Visual Basic) method.
+ The name of the method.
+
+ An array of objects that specify the type parameters of the generic method.
+ This argument should be null when specifies a non-generic method.
+
+ An array of objects that represent the arguments to the method.
+
+ or is null.
+ No method whose name is , whose type parameters match , and whose parameter types match is found in or its base types.-or-More than one method whose name is , whose type parameters match , and whose parameter types match is found in or its base types.
+
+
+ Creates a that represents a method call.
+ A that has the property equal to and the , , and properties set to the specified values.
+ An to set the property equal to (pass null for a static (Shared in Visual Basic) method).
+ A to set the property equal to.
+ An that contains objects to use to populate the collection.
+
+ is null.-or- is null and represents an instance method.
+
+ .Type is not assignable to the declaring type of the method represented by .-or-The number of elements in does not equal the number of parameters for the method represented by .-or-One or more of the elements of is not assignable to the corresponding parameter for the method represented by .
+
+
+ Creates a that represents applying an array index operator to a multi-dimensional array.
+ A that has the property equal to and the and properties set to the specified values.
+ An array of instances - indexes for the array index operation.
+ An array that contains objects to use to populate the collection.
+
+
+ Creates a that represents applying an array index operator to an array of rank more than one.
+ A that has the property equal to and the and properties set to the specified values.
+ An to set the property equal to.
+ An that contains objects to use to populate the collection.
+
+ or is null.
+
+ .Type does not represent an array type.-or-The rank of .Type does not match the number of elements in .-or-The property of one or more elements of does not represent the type.
+
+
- Creates a that represents a dynamic operation bound by the provided .
+ Creates an empty expression that has type.
- The type of the delegate used by the .
- The runtime binder for the dynamic operation.
- The arguments to the dynamic operation.
- A that has equal to
- Dynamic and has the
- DelegateType,
- Binder, and
- Arguments set to the specified values.
+ A that has the property equal to
+ and the property set to .
-
+
- Creates a that represents a dynamic operation bound by the provided .
+ Creates a that has the property set to the specified type.
- The type of the delegate used by the .
- The runtime binder for the dynamic operation.
- The arguments to the dynamic operation.
+ A to set the property equal to.
- A that has equal to
- Dynamic and has the
- DelegateType,
- Binder, and
- Arguments set to the specified values.
+ A that has the property equal to
+ and the property set to the specified type.
-
+
- Creates a that represents a dynamic operation bound by the provided and one argument.
+ Constructs a new instance of .
- The type of the delegate used by the .
- The runtime binder for the dynamic operation.
- The argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- DelegateType,
- Binder, and
- Arguments set to the specified values.
-
-
+
- Creates a that represents a dynamic operation bound by the provided and two arguments.
+ Reduces this node to a simpler expression. If CanReduce returns
+ true, this should return a valid expression. This method is
+ allowed to return another node which itself must be reduced.
- The type of the delegate used by the .
- The runtime binder for the dynamic operation.
- The first argument to the dynamic operation.
- The second argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- DelegateType,
- Binder, and
- Arguments set to the specified values.
-
+ The reduced expression.
-
+
- Creates a that represents a dynamic operation bound by the provided and three arguments.
+ Reduces the node and then calls the visitor delegate on the reduced expression.
+ Throws an exception if the node isn't reducible.
- The type of the delegate used by the .
- The runtime binder for the dynamic operation.
- The first argument to the dynamic operation.
- The second argument to the dynamic operation.
- The third argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- DelegateType,
- Binder, and
- Arguments set to the specified values.
-
-
-
-
- Creates a that represents a dynamic operation bound by the provided and four arguments.
-
- The type of the delegate used by the .
- The runtime binder for the dynamic operation.
- The first argument to the dynamic operation.
- The second argument to the dynamic operation.
- The third argument to the dynamic operation.
- The fourth argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- DelegateType,
- Binder, and
- Arguments set to the specified values.
-
-
-
-
- Creates a that represents a dynamic operation bound by the provided .
-
- The runtime binder for the dynamic operation.
- The result type of the dynamic expression.
- The arguments to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- Binder and
- Arguments set to the specified values.
-
+ An instance of .
+ The expression being visited, or an expression which should replace it in the tree.
- The DelegateType property of the
- result will be inferred from the types of the arguments and the specified return type.
+ Override this method to provide logic to walk the node's children.
+ A typical implementation will call visitor.Visit on each of its
+ children, and if any of them change, should return a new copy of
+ itself with the modified children.
-
+
- Creates a that represents a dynamic operation bound by the provided .
+ Dispatches to the specific visit method for this node type. For
+ example, will call into
+ .
- The runtime binder for the dynamic operation.
- The result type of the dynamic expression.
- The first argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- Binder and
- Arguments set to the specified values.
-
+ The visitor to visit this node with.
+ The result of visiting this node.
- The DelegateType property of the
- result will be inferred from the types of the arguments and the specified return type.
+ This default implementation for
+ nodes will call .
+ Override this method to call into a more specific method on a derived
+ visitor class of ExprressionVisitor. However, it should still
+ support unknown visitors by calling VisitExtension.
-
+
- Creates a that represents a dynamic operation bound by the provided .
+ Reduces this node to a simpler expression. If CanReduce returns
+ true, this should return a valid expression. This method is
+ allowed to return another node which itself must be reduced.
- The runtime binder for the dynamic operation.
- The result type of the dynamic expression.
- The first argument to the dynamic operation.
- The second argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- Binder and
- Arguments set to the specified values.
-
-
- The DelegateType property of the
- result will be inferred from the types of the arguments and the specified return type.
+ The reduced expression.
+
+ Unlike Reduce, this method checks that the reduced node satisfies
+ certain invariants.
-
+
- Creates a that represents a dynamic operation bound by the provided .
+ Reduces the expression to a known node type (i.e. not an Extension node)
+ or simply returns the expression if it is already a known type.
- The runtime binder for the dynamic operation.
- The result type of the dynamic expression.
- The first argument to the dynamic operation.
- The second argument to the dynamic operation.
- The third argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- Binder and
- Arguments set to the specified values.
-
-
- The DelegateType property of the
- result will be inferred from the types of the arguments and the specified return type.
-
+ The reduced expression.
-
+
- Creates a that represents a dynamic operation bound by the provided .
+ Creates a representation of the Expression.
- The runtime binder for the dynamic operation.
- The result type of the dynamic expression.
- The first argument to the dynamic operation.
- The second argument to the dynamic operation.
- The third argument to the dynamic operation.
- The fourth argument to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- Binder and
- Arguments set to the specified values.
-
-
- The DelegateType property of the
- result will be inferred from the types of the arguments and the specified return type.
-
+ A representation of the Expression.
-
+
- Creates a that represents a dynamic operation bound by the provided .
+ Writes a representation of the to a .
- The runtime binder for the dynamic operation.
- The result type of the dynamic expression.
- The arguments to the dynamic operation.
-
- A that has equal to
- Dynamic and has the
- Binder and
- Arguments set to the specified values.
-
-
- The DelegateType property of the
- result will be inferred from the types of the arguments and the specified return type.
-
+ A that will be used to build the string representation.
+
+
+
+ Helper used for ensuring we only return 1 instance of a ReadOnlyCollection of T.
+
+ This is called from various methods where we internally hold onto an IList of T
+ or a readonly collection of T. We check to see if we've already returned a
+ readonly collection of T and if so simply return the other one. Otherwise we do
+ a thread-safe replacement of the list w/ a readonly collection which wraps it.
+
+ Ultimately this saves us from having to allocate a ReadOnlyCollection for our
+ data types because the compiler is capable of going directly to the IList of T.
+
+
+
+
+ Helper used for ensuring we only return 1 instance of a ReadOnlyCollection of T.
+
+ This is similar to the ReturnReadOnly of T. This version supports nodes which hold
+ onto multiple Expressions where one is typed to object. That object field holds either
+ an expression or a ReadOnlyCollection of Expressions. When it holds a ReadOnlyCollection
+ the IList which backs it is a ListArgumentProvider which uses the Expression which
+ implements IArgumentProvider to get 2nd and additional values. The ListArgumentProvider
+ continues to hold onto the 1st expression.
+
+ This enables users to get the ReadOnlyCollection w/o it consuming more memory than if
+ it was just an array. Meanwhile The DLR internally avoids accessing which would force
+ the readonly collection to be created resulting in a typical memory savings.
+
+
+
+
+ Helper which is used for specialized subtypes which use ReturnReadOnly(ref object, ...).
+ This is the reverse version of ReturnReadOnly which takes an IArgumentProvider.
+
+ This is used to return the 1st argument. The 1st argument is typed as object and either
+ contains a ReadOnlyCollection or the Expression. We check for the Expression and if it's
+ present we return that, otherwise we return the 1st element of the ReadOnlyCollection.
+
+
+
+
+ Creates an instance of .
+
+ An array of objects to use to populate the collection.
+ An instance of that has the property equal to and the property set to the specified value.
+
+
+
+ Creates an instance of .
+
+ A collection of objects to use to populate the collection.
+ An instance of that has the property equal to and the property set to the specified value.
@@ -3312,48 +4264,888 @@
A representation of the Expression.
-
+
Dispatches to the specific visit method for this node type.
-
+
Creates a new expression that is like this one, but using the
supplied children. If all of the children are the same, it will
return this expression.
- The property of the result.
- The property of the result.
- The property of the result.
+ The property of the result.
This expression if no children changed, or an expression with the updated children.
-
+
- Gets the static type of the expression that this represents.
+ Gets the static type of the expression that this represents.
- The that represents the static type of the expression.
+ The that represents the static type of the expression.
-
+
Returns the node type of this Expression. Extension nodes should return
ExpressionType.Extension when overriding this method.
The of the expression.
-
+
- Gets the that is the body of the loop.
+ Gets the expression operand of a type test operation.
-
+
- Gets the that is used by the loop body as a break statement target.
+ Gets the type operand of a type test operation.
-
+
- Gets the that is used by the loop body as a continue statement target.
+ Represents accessing a field or property.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the field or property to be accessed.
+
+
+
+
+ Gets the containing object of the field or property.
+
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Represents assignment to a member of an object.
+
+
+
+
+ Provides the base class from which the classes that represent bindings that are used to initialize members of a newly created object derive.
+
+
+
+
+ Initializes an instance of class.
+
+ The type of member binding.
+ The field or property to be initialized.
+
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Gets the type of binding that is represented.
+
+
+
+
+ Gets the field or property to be initialized.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the which represents the object whose member is being assigned to.
+
+
+
+
+ Represents the unary dynamic operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unary operation kind.
+
+
+
+ Performs the binding of the unary dynamic operation if the target dynamic object cannot bind.
+
+ The target of the dynamic unary operation.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the unary dynamic operation if the target dynamic object cannot bind.
+
+ The target of the dynamic unary operation.
+ The binding result in case the binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic unary operation.
+
+ The target of the dynamic operation.
+ An array of arguments of the dynamic operation.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ The unary operation kind.
+
+
+
+
+ Represents the create dynamic operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new intsance of the .
+
+ The signature of the arguments at the call site.
+
+
+
+ Performs the binding of the dynamic create operation if the target dynamic object cannot bind.
+
+ The target of the dynamic create operation.
+ The arguments of the dynamic create operation.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic create operation if the target dynamic object cannot bind.
+
+ The target of the dynamic create operation.
+ The arguments of the dynamic create operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic create operation.
+
+ The target of the dynamic create operation.
+ An array of arguments of the dynamic create operation.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ Gets the signature of the arguments at the call site.
+
+
+
+
+ Expression rewriting to spill the CLR stack into temporary variables
+ in order to guarantee some properties of code generation, for
+ example that we always enter try block on empty stack.
+
+
+
+
+ Rewrite the expression
+
+
+ Expression to rewrite
+ State of the stack before the expression is emitted.
+ Rewritten expression.
+
+
+
+ Will perform:
+ save: temp = expression
+ return value: temp
+
+
+
+
+ Creates a special block that is marked as not allowing jumps in.
+ This should not be used for rewriting BlockExpression itself, or
+ anything else that supports jumping.
+
+
+
+
+ Creates a special block that is marked as not allowing jumps in.
+ This should not be used for rewriting BlockExpression itself, or
+ anything else that supports jumping.
+
+
+
+
+ The source of temporary variables
+
+
+
+
+ Initial stack state. Normally empty, but when inlining the lambda
+ we might have a non-empty starting stack state.
+
+
+
+
+ Lambda rewrite result. We need this for inlined lambdas to figure
+ out whether we need to guarentee it an empty stack.
+
+
+
+
+ Analyzes a lambda, producing a new one that has correct invariants
+ for codegen. In particular, it spills the IL stack to temps in
+ places where it's invalid to have a non-empty stack (for example,
+ entering a try statement).
+
+
+
+
+ Will clone an IList into an array of the same size, and copy
+ all vaues up to (and NOT including) the max index
+
+ The cloned array.
+
+
+
+ If we are spilling, requires that there are no byref arguments to
+ the method call.
+
+ Used for:
+ NewExpression,
+ MethodCallExpression,
+ InvocationExpression,
+ DynamicExpression,
+ UnaryExpression,
+ BinaryExpression.
+
+
+ We could support this if spilling happened later in the compiler.
+ Other expressions that can emit calls with arguments (such as
+ ListInitExpression and IndexExpression) don't allow byref arguments.
+
+
+
+
+ Requires that the instance is not a value type (primitive types are
+ okay because they're immutable).
+
+ Used for:
+ MethodCallExpression,
+ MemberExpression (for properties),
+ IndexExpression,
+ ListInitExpression,
+ MemberInitExpression,
+ assign to MemberExpression,
+ assign to IndexExpression.
+
+
+ We could support this if spilling happened later in the compiler.
+
+
+
+
+ Current temporary variable
+
+
+
+
+ List of free temporary variables. These can be recycled for new temps.
+
+
+
+
+ Stack of currently active temporary variables.
+
+
+
+
+ List of all temps created by stackspiller for this rule/lambda
+
+
+
+
+ Rewrites child expressions, spilling them into temps if needed. The
+ stack starts in the inital state, and after the first subexpression
+ is added it is change to non-empty. This behavior can be overridden
+ by setting the stack manually between adds.
+
+ When all children have been added, the caller should rewrite the
+ node if Rewrite is true. Then, it should call Finish with etiher
+ the orignal expression or the rewritten expression. Finish will call
+ Expression.Comma if necessary and return a new Result.
+
+
+
+
+ Represents a control expression that handles multiple selections by passing control to a .
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the test for the switch.
+
+
+
+
+ Gets the collection of objects for the switch.
+
+
+
+
+ Gets the test for the switch.
+
+
+
+
+ Gets the equality comparison method, if any.
+
+
+
+
+ Creates a node.
+ This captures a block of code that is similar to a .NET method body.
+
+
+ Lambda expressions take input through parameters and are expected to be fully bound.
+
+
+
+
+ Produces a delegate that represents the lambda expression.
+
+ A delegate containing the compiled version of the lambda.
+
+
+
+ Produces a delegate that represents the lambda expression.
+
+ Debugging information generator used by the compiler to mark sequence points and annotate local variables.
+ A delegate containing the compiled version of the lambda.
+
+
+
+ Compiles the lambda into a method definition.
+
+ A which will be used to hold the lambda's IL.
+
+
+
+ Compiles the lambda into a method definition and custom debug information.
+
+ A which will be used to hold the lambda's IL.
+ Debugging information generator used by the compiler to mark sequence points and annotate local variables.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Gets the parameters of the lambda expression.
+
+
+
+
+ Gets the name of the lambda expression.
+
+ Used for debugging purposes.
+
+
+
+ Gets the body of the lambda expression.
+
+
+
+
+ Gets the return type of the lambda expression.
+
+
+
+
+ Gets the value that indicates if the lambda expression will be compiled with
+ tail call optimization.
+
+
+
+
+ Defines a node.
+ This captures a block of code that is similar to a .NET method body.
+
+ The type of the delegate.
+
+ Lambda expressions take input through parameters and are expected to be fully bound.
+
+
+
+
+ Produces a delegate that represents the lambda expression.
+
+ A delegate containing the compiled version of the lambda.
+
+
+
+ Produces a delegate that represents the lambda expression.
+
+ Debugging information generator used by the compiler to mark sequence points and annotate local variables.
+ A delegate containing the compiled version of the lambda.
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The Body property of the result.
+ The Parameters property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Represents a block that contains a sequence of expressions where variables can be defined.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Makes a copy of this node replacing the parameters/args with the provided values. The
+ shape of the parameters/args needs to match the shape of the current block - in other
+ words there should be the same # of parameters and args.
+
+ parameters can be null in which case the existing parameters are used.
+
+ This helper is provided to allow re-writing of nodes to not depend on the specific optimized
+ subclass of BlockExpression which is being used.
+
+
+
+
+ Helper used for ensuring we only return 1 instance of a ReadOnlyCollection of T.
+
+ This is similar to the ReturnReadOnly which only takes a single argument. This version
+ supports nodes which hold onto 5 Expressions and puts all of the arguments into the
+ ReadOnlyCollection.
+
+ Ultimately this means if we create the readonly collection we will be slightly more wasteful as we'll
+ have a readonly collection + some fields in the type. The DLR internally avoids accessing anything
+ which would force the readonly collection to be created.
+
+ This is used by BlockExpression5 and MethodCallExpression5.
+
+
+
+
+ Gets the expressions in this block.
+
+
+
+
+ Gets the variables defined in this block.
+
+
+
+
+ Gets the last expression in this block.
+
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Provides a wrapper around an IArgumentProvider which exposes the argument providers
+ members out as an IList of Expression. This is used to avoid allocating an array
+ which needs to be stored inside of a ReadOnlyCollection. Instead this type has
+ the same amount of overhead as an array without duplicating the storage of the
+ elements. This ensures that internally we can avoid creating and copying arrays
+ while users of the Expression trees also don't pay a size penalty for this internal
+ optimization. See IArgumentProvider for more general information on the Expression
+ tree optimizations being used here.
+
+
+
+
+ Represents the dynamic get index operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the .
+
+ The signature of the arguments at the call site.
+
+
+
+ Performs the binding of the dynamic get index operation.
+
+ The target of the dynamic get index operation.
+ An array of arguments of the dynamic get index operation.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic get index operation if the target dynamic object cannot bind.
+
+ The target of the dynamic get index operation.
+ The arguments of the dynamic get index operation.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic get index operation if the target dynamic object cannot bind.
+
+ The target of the dynamic get index operation.
+ The arguments of the dynamic get index operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ Gets the signature of the arguments at the call site.
+
+
+
+
+ A simple dictionary of queues, keyed off a particular type
+ This is useful for storing free lists of variables
+
+
+
+
+ Represents creating a new array and possibly initializing the elements of the new array.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Gets the bounds of the array if the value of the property is NewArrayBounds, or the values to initialize the elements of the new array if the value of the property is NewArrayInit.
+
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Represents a catch statement in a try block.
+ This must have the same return type (i.e., the type of ) as the try block it is associated with.
+
+
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets a reference to the object caught by this handler.
+
+
+
+
+ Gets the type of this handler catches.
+
+
+
+
+ Gets the body of the catch block.
+
+
+
+
+ Gets the body of the 's filter.
+
+
+
+
+ Stores information needed to emit debugging symbol information for a
+ source file, in particular the file name and unique language identifier.
+
+
+
+
+ The source file name.
+
+
+
+
+ Returns the language's unique identifier, if any.
+
+
+
+
+ Returns the language vendor's unique identifier, if any.
+
+
+
+
+ Returns the document type's unique identifier, if any.
+ Defaults to the guid for a text file.
+
+
+
+
+ Represents the dynamic set index operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the .
+
+ The signature of the arguments at the call site.
+
+
+
+ Performs the binding of the dynamic set index operation.
+
+ The target of the dynamic set index operation.
+ An array of arguments of the dynamic set index operation.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic set index operation if the target dynamic object cannot bind.
+
+ The target of the dynamic set index operation.
+ The arguments of the dynamic set index operation.
+ The value to set to the collection.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic set index operation if the target dynamic object cannot bind.
+
+ The target of the dynamic set index operation.
+ The arguments of the dynamic set index operation.
+ The value to set to the collection.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ Gets the signature of the arguments at the call site.
+
+
+
+
+ Represents an object with members that can be dynamically added and removed at runtime.
+
+
+
+
+ Represents a dynamic object, that can have its operations bound at runtime.
+
+
+ Objects that want to participate in the binding process should implement an IDynamicMetaObjectProvider interface,
+ and implement to return a .
+
+
+
+
+ Returns the responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+ The to bind this object.
+
+
+
+ Creates a new ExpandoObject with no members.
+
+
+
+
+ Try to get the data stored for the specified class at the specified index. If the
+ class has changed a full lookup for the slot will be performed and the correct
+ value will be retrieved.
+
+
+
+
+ Sets the data for the specified class at the specified index. If the class has
+ changed then a full look for the slot will be performed. If the new class does
+ not have the provided slot then the Expando's class will change. Only case sensitive
+ setter is supported in ExpandoObject.
+
+
+
+
+ Deletes the data stored for the specified class at the specified index.
+
+
+
+
+ Returns true if the member at the specified index has been deleted,
+ otherwise false. Call this function holding the lock.
+
+
+
+
+ Promotes the class from the old type to the new type and returns the new
+ ExpandoData object.
+
+
+
+
+ Internal helper to promote a class. Called from our RuntimeOps helper. This
+ version simply doesn't expose the ExpandoData object which is a private
+ data structure.
+
+
+
+
+ Exposes the ExpandoClass which we've associated with this
+ Expando object. Used for type checks in rules.
@@ -3530,997 +5322,691 @@
Represents the most specific type known about the object represented by the . if runtime value is available, a type of the otherwise.
-
+
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Array is null.
- Offset or count are out of range.
-
-
-
- Requires the array and all its items to be non-null.
+ Adds a dynamic test which checks if the version has changed. The test is only necessary for
+ performance as the methods will do the correct thing if called with an incorrect version.
-
+
- Emits a Ldind* instruction for the appropriate type
+ Gets the class and the index associated with the given name. Does not update the expando object. Instead
+ this returns both the original and desired new class. A rule is created which includes the test for the
+ original class, the promotion to the new class, and the set/delete based on the class post-promotion.
-
+
- Emits a Stind* instruction for the appropriate type.
+ Returns our Expression converted to our known LimitType
-
+
- Emits a Stelem* instruction for the appropriate type.
+ Returns a Restrictions object which includes our current restrictions merged
+ with a restriction limiting our type
-
+
- Emits an array of constant values provided in the given list.
- The array is strongly typed.
+ Stores the class and the data associated with the class as one atomic
+ pair. This enables us to do a class check in a thread safe manner w/o
+ requiring locks.
-
+
- Emits an array of values of count size. The items are emitted via the callback
- which is provided with the current item index to emit.
+ the dynamically assigned class associated with the Expando object
-
+
- Emits an array construction code.
- The code assumes that bounds for all dimensions
- are already emitted.
-
-
-
-
- Emits default(T)
- Semantics match C# compiler behavior
-
-
-
-
- Expression rewriting to spill the CLR stack into temporary variables
- in order to guarantee some properties of code generation, for
- example that we always enter try block on empty stack.
-
-
-
-
- Will perform:
- save: temp = expression
- return value: temp
-
-
-
-
- Creates a special block that is marked as not allowing jumps in.
- This should not be used for rewriting BlockExpression itself, or
- anything else that supports jumping.
-
-
-
-
- Creates a special block that is marked as not allowing jumps in.
- This should not be used for rewriting BlockExpression itself, or
- anything else that supports jumping.
-
-
-
-
- Rewrite the expression
-
+ data stored in the expando object, key names are stored in the class.
- Expression to rewrite
- State of the stack before the expression is emitted.
- Rewritten expression.
-
-
-
- The source of temporary variables
-
-
-
-
- Initial stack state. Normally empty, but when inlining the lambda
- we might have a non-empty starting stack state.
-
-
-
-
- Lambda rewrite result. We need this for inlined lambdas to figure
- out whether we need to guarentee it an empty stack.
-
-
-
-
- Analyzes a lambda, producing a new one that has correct invariants
- for codegen. In particular, it spills the IL stack to temps in
- places where it's invalid to have a non-empty stack (for example,
- entering a try statement).
-
-
-
-
- Will clone an IList into an array of the same size, and copy
- all vaues up to (and NOT including) the max index
-
- The cloned array.
-
-
-
- If we are spilling, requires that there are no byref arguments to
- the method call.
-
- Used for:
- NewExpression,
- MethodCallExpression,
- InvocationExpression,
- DynamicExpression,
- UnaryExpression,
- BinaryExpression.
-
-
- We could support this if spilling happened later in the compiler.
- Other expressions that can emit calls with arguments (such as
- ListInitExpression and IndexExpression) don't allow byref arguments.
-
-
-
-
- Requires that the instance is not a value type (primitive types are
- okay because they're immutable).
-
- Used for:
- MethodCallExpression,
- MemberExpression (for properties),
- IndexExpression,
- ListInitExpression,
- MemberInitExpression,
- assign to MemberExpression,
- assign to IndexExpression.
-
-
- We could support this if spilling happened later in the compiler.
-
-
-
-
- Current temporary variable
-
-
-
-
- List of free temporary variables. These can be recycled for new temps.
-
-
-
-
- Stack of currently active temporary variables.
-
-
-
-
- List of all temps created by stackspiller for this rule/lambda
-
-
-
-
- Rewrites child expressions, spilling them into temps if needed. The
- stack starts in the inital state, and after the first subexpression
- is added it is change to non-empty. This behavior can be overridden
- by setting the stack manually between adds.
-
- When all children have been added, the caller should rewrite the
- node if Rewrite is true. Then, it should call Finish with etiher
- the orignal expression or the rewritten expression. Finish will call
- Expression.Comma if necessary and return a new Result.
-
-
-
-
- A special subtype of BlockExpression that indicates to the compiler
- that this block is a spilled expression and should not allow jumps in.
-
-
-
-
- Represents a block that contains a sequence of expressions where variables can be defined.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Makes a copy of this node replacing the parameters/args with the provided values. The
- shape of the parameters/args needs to match the shape of the current block - in other
- words there should be the same # of parameters and args.
-
- parameters can be null in which case the existing parameters are used.
-
- This helper is provided to allow re-writing of nodes to not depend on the specific optimized
- subclass of BlockExpression which is being used.
-
-
-
-
- Helper used for ensuring we only return 1 instance of a ReadOnlyCollection of T.
-
- This is similar to the ReturnReadOnly which only takes a single argument. This version
- supports nodes which hold onto 5 Expressions and puts all of the arguments into the
- ReadOnlyCollection.
-
- Ultimately this means if we create the readonly collection we will be slightly more wasteful as we'll
- have a readonly collection + some fields in the type. The DLR internally avoids accessing anything
- which would force the readonly collection to be created.
-
- This is used by BlockExpression5 and MethodCallExpression5.
-
-
-
-
- Gets the expressions in this block.
-
-
-
-
- Gets the variables defined in this block.
-
-
-
-
- Gets the last expression in this block.
-
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Represents a visitor or rewriter for expression trees.
-
-
- This class is designed to be inherited to create more specialized
- classes whose functionality requires traversing, examining or copying
- an expression tree.
-
-
-
-
- Initializes a new instance of .
-
-
-
-
- Dispatches the expression to one of the more specialized visit methods in this class.
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Dispatches the list of expressions to one of the more specialized visit methods in this class.
-
- The expressions to visit.
- The modified expression list, if any of the elements were modified;
- otherwise, returns the original expression list.
-
-
-
- Visits all nodes in the collection using a specified element visitor.
-
- The type of the nodes.
- The nodes to visit.
- A delegate that visits a single element,
- optionally replacing it with a new element.
- The modified node list, if any of the elements were modified;
- otherwise, returns the original node list.
-
-
-
- Visits an expression, casting the result back to the original expression type.
-
- The type of the expression.
- The expression to visit.
- The name of the calling method; used to report to report a better error message.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
- The visit method for this node returned a different type.
-
-
-
- Visits an expression, casting the result back to the original expression type.
-
- The type of the expression.
- The expression to visit.
- The name of the calling method; used to report to report a better error message.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
- The visit method for this node returned a different type.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the extension expression.
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
- This can be overridden to visit or rewrite specific extension nodes.
- If it is not overridden, this method will call ,
- which gives the node a chance to walk its children. By default,
- will try to reduce the node.
-
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The type of the delegate.
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
-
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
-
-
- Visits the children of the .
+ Expando._data must be locked when mutating the value. Otherwise a copy of it
+ could be made and lose values.
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
+
- Visits the children of the .
+ Constructs an empty ExpandoData object with the empty class and no data.
- The expression to visit.
- The modified expression, if it or any subexpression was modified;
- otherwise, returns the original expression.
-
+
- Write out the given AST
+ the version of the ExpandoObject that tracks set and delete operations
-
+
- Return true if the input string contains any whitespace character.
- Otherwise false.
+ Constructs a new ExpandoData object with the specified class and data.
-
+
- Represents initializing members of a member of a newly created object.
+ Update the associated class and increases the storage for the data array if needed.
-
- Use the factory methods to create a .
- The value of the property of a object is .
-
+
-
+
- Provides the base class from which the classes that represent bindings that are used to initialize members of a newly created object derive.
+ Indexer for getting/setting the data
-
+
- Initializes an instance of class.
+ Represents one case of a .
- The type of member binding.
- The field or property to be initialized.
-
+
Returns a that represents the current .
A that represents the current .
-
-
- Gets the type of binding that is represented.
-
-
-
-
- Gets the field or property to be initialized.
-
-
-
+
Creates a new expression that is like this one, but using the
supplied children. If all of the children are the same, it will
return this expression.
- The property of the result.
+ The property of the result.
+ The property of the result.
This expression if no children changed, or an expression with the updated children.
-
+
- Gets the bindings that describe how to initialize the members of a member.
+ Gets the values of this case. This case is selected for execution when the matches any of these values.
-
+
- Describes the binding types that are used in MemberInitExpression objects.
+ Gets the body of this case.
-
+
- A binding that represents initializing a member with the value of an expression.
+ Provides an internal interface for accessing the arguments that multiple tree
+ nodes (DynamicExpression, ElementInit, MethodCallExpression, InvocationExpression, NewExpression,
+ and InexExpression).
+
+ This enables two optimizations which reduce the size of the trees. The first is it enables
+ the nodes to hold onto an IList of T instead of a ReadOnlyCollection. This saves the cost
+ of allocating the ReadOnlyCollection for each node. The second is that it enables specialized
+ subclasses to be created which hold onto a specific number of arguments. For example Block2,
+ Block3, Block4. These nodes can therefore avoid allocating both a ReadOnlyCollection and an
+ array for storing their elements saving 32 bytes per node.
+
+ Meanwhile the nodes can continue to expose the original LINQ properties of ReadOnlyCollections. They
+ do this by re-using 1 field for storing both the array or an element that would normally be stored
+ in the array.
+
+ For the array case the collection is typed to IList of T instead of ReadOnlyCollection of T.
+ When the node is initially constructed it is an array. When the compiler accesses the members it
+ uses this interface. If a user accesses the members the array is promoted to a ReadOnlyCollection.
+
+ For the object case we store the 1st argument in a field typed to object and when the node is initially
+ constructed this holds directly onto the Expression. When the compiler accesses the members
+ it again uses this interface and the accessor for the 1st argument uses Expression.ReturnObject to
+ return the object which handles the Expression or ReadOnlyCollection case. When the user accesses
+ the ReadOnlyCollection then the object field is updated to hold directly onto the ReadOnlyCollection.
+
+ It is important that the Expressions consistently return the same ReadOnlyCollection otherwise the
+ re-writer will be broken and it would be a breaking change from LINQ v1. The problem is that currently
+ users can rely on object identity to tell if the node has changed. Storing the readonly collection in
+ an overloaded field enables us to both reduce memory usage as well as maintain compatibility and an
+ easy to use external API.
-
+
- A binding that represents recursively initializing members of a member.
+ Represents a dynamically assigned class. Expando objects which share the same
+ members will share the same class. Classes are dynamically assigned as the
+ expando object gains members.
-
+
- A binding that represents initializing a member of type or from a list of elements.
+ Constructs the empty ExpandoClass. This is the class used when an
+ empty Expando object is initially constructed.
-
+
- An expression that provides runtime read/write access to variables.
- Needed to implement "eval" in some dynamic languages.
- Evaluates to an instance of when executed.
+ Constructs a new ExpandoClass that can hold onto the specified keys. The
+ keys must be sorted ordinally. The hash code must be precalculated for
+ the keys.
-
+
- Dispatches to the specific visit method for this node type.
+ Finds or creates a new ExpandoClass given the existing set of keys
+ in this ExpandoClass plus the new key to be added. Members in an
+ ExpandoClass are always stored case sensitively.
-
+
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- The variables or parameters to which to provide runtime access.
+ Gets the lists of transitions that are valid from this ExpandoClass
+ to an ExpandoClass whos keys hash to the apporopriate hash code.
-
+
- Specifies what kind of jump this represents.
+ Gets the index at which the value should be stored for the specified name.
-
+
- A that represents a jump to some location.
+ Gets the index at which the value should be stored for the specified name
+ case sensitively. Returns the index even if the member is marked as deleted.
-
+
- A that represents a return statement.
+ Gets the index at which the value should be stored for the specified name,
+ the method is only used in the case-insensitive case.
-
-
-
- A that represents a break statement.
-
-
-
-
- A that represents a continue statement.
-
-
-
-
- Represents an unconditional jump. This includes return statements, break and continue statements, and other jumps.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- The value passed to the target, or null if the target is of type
- System.Void.
-
-
-
-
- The target label where this node jumps to.
-
-
-
-
- The kind of the goto. For information purposes only.
-
-
-
-
- Represents the unary dynamic operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- The dynamic call site binder that participates in the binding protocol.
-
-
- The performs the binding of the dynamic operation using the runtime values
- as input. On the other hand, the participates in the
- binding protocol.
-
-
-
-
- Class responsible for runtime binding of the dynamic operations on the dynamic call site.
-
-
-
-
- The Level 2 cache - all rules produced for the same binder.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Performs the runtime binding of the dynamic operation on a set of arguments.
-
- An array of arguments to the dynamic operation.
- The array of instances that represent the parameters of the call site in the binding process.
- A LabelTarget used to return the result of the dynamic binding.
+ the name of the member
+ The ExpandoObject associated with the class
+ that is used to check if a member has been deleted.
- An Expression that performs tests on the dynamic operation arguments, and
- performs the dynamic operation if hte tests are valid. If the tests fail on
- subsequent occurrences of the dynamic operation, Bind will be called again
- to produce a new for the new argument types.
+ the exact match if there is one
+ if there is exactly one member with case insensitive match, return it
+ otherwise we throw AmbiguousMatchException.
-
+
- Provides low-level runtime binding support. Classes can override this and provide a direct
- delegate for the implementation of rule. This can enable saving rules to disk, having
- specialized rules available at runtime, or providing a different caching policy.
-
- The target type of the CallSite.
- The CallSite the bind is being performed for.
- The arguments for the binder.
- A new delegate which replaces the CallSite Target.
-
-
-
- Adds a target to the cache of known targets. The cached targets will
- be scanned before calling BindDelegate to produce the new rule.
-
- The type of target being added.
- The target delegate to be added to the cache.
-
-
-
- Gets a label that can be used to cause the binding to be updated. It
- indicates that the expression's binding is no longer valid.
- This is typically used when the "version" of a dynamic object has
- changed.
+ Gets the names of the keys that can be stored in the Expando class. The
+ list is sorted ordinally.
-
+
- Initializes a new instance of the class.
+ Represents the dynamic delete index operation at the call site, providing the binding semantic and the details about the operation.
-
+
- Performs the runtime binding of the dynamic operation on a set of arguments.
+ Initializes a new instance of the .
- An array of arguments to the dynamic operation.
- The array of instances that represent the parameters of the call site in the binding process.
- A LabelTarget used to return the result of the dynamic binding.
-
- An Expression that performs tests on the dynamic operation arguments, and
- performs the dynamic operation if the tests are valid. If the tests fail on
- subsequent occurrences of the dynamic operation, Bind will be called again
- to produce a new for the new argument types.
-
+ The signature of the arguments at the call site.
-
+
- When overridden in the derived class, performs the binding of the dynamic operation.
+ Performs the binding of the dynamic delete index operation.
- The target of the dynamic operation.
- An array of arguments of the dynamic operation.
+ The target of the dynamic delete index operation.
+ An array of arguments of the dynamic delete index operation.
The representing the result of the binding.
-
+
- Gets an expression that will cause the binding to be updated. It
- indicates that the expression's binding is no longer valid.
- This is typically used when the "version" of a dynamic object has
- changed.
+ Performs the binding of the dynamic delete index operation if the target dynamic object cannot bind.
- The Type property of the resulting expression; any type is allowed.
- The update expression.
-
-
-
- Defers the binding of the operation until later time when the runtime values of all dynamic operation arguments have been computed.
-
- The target of the dynamic operation.
- An array of arguments of the dynamic operation.
+ The target of the dynamic delete index operation.
+ The arguments of the dynamic delete index operation.
The representing the result of the binding.
-
+
- Defers the binding of the operation until later time when the runtime values of all dynamic operation arguments have been computed.
+ When overridden in the derived class, performs the binding of the dynamic delete index operation if the target dynamic object cannot bind.
- An array of arguments of the dynamic operation.
+ The target of the dynamic delete index operation.
+ The arguments of the dynamic delete index operation.
+ The binding result to use if binding fails, or null.
The representing the result of the binding.
-
+
The result type of the operation.
-
+
- Initializes a new instance of the class.
+ Gets the signature of the arguments at the call site.
- The unary operation kind.
-
+
- Performs the binding of the unary dynamic operation if the target dynamic object cannot bind.
+ Represents the convert dynamic operation at the call site, providing the binding semantic and the details about the operation.
- The target of the dynamic unary operation.
+
+
+
+ Initializes a new intsance of the .
+
+ The type to convert to.
+ true if the conversion should consider explicit conversions; otherwise, false.
+
+
+
+ Performs the binding of the dynamic convert operation if the target dynamic object cannot bind.
+
+ The target of the dynamic convert operation.
The representing the result of the binding.
-
+
- Performs the binding of the unary dynamic operation if the target dynamic object cannot bind.
+ When overridden in the derived class, performs the binding of the dynamic convert operation if the target dynamic object cannot bind.
- The target of the dynamic unary operation.
- The binding result in case the binding fails, or null.
+ The target of the dynamic convert operation.
+ The binding result to use if binding fails, or null.
The representing the result of the binding.
-
+
- Performs the binding of the dynamic unary operation.
+ Performs the binding of the dynamic convert operation.
- The target of the dynamic operation.
- An array of arguments of the dynamic operation.
+ The target of the dynamic convert operation.
+ An array of arguments of the dynamic convert operation.
The representing the result of the binding.
-
+
+
+ The type to convert to.
+
+
+
+
+ Gets the value indicating if the conversion should consider explicit conversions.
+
+
+
The result type of the operation.
-
+
- The unary operation kind.
+ Encapsulates a method that has no parameters and returns a value of the type specified by the TResult parameter.
+ The type of the return value of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
-
+
- Represents a dynamic object, that can have its operations bound at runtime.
+ Encapsulates a method that has one parameter and returns a value of the type specified by the TResult parameter.
-
- Objects that want to participate in the binding process should implement an IDynamicMetaObjectProvider interface,
- and implement to return a .
-
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
-
+
- Returns the responsible for binding operations performed on this object.
+ Encapsulates a method that has two parameters and returns a value of the type specified by the TResult parameter.
- The expression tree representation of the runtime value.
- The to bind this object.
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has three parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has four parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has five parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has six parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has seven parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has eight parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has nine parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has ten parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has eleven parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has twelve parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has thirteen parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has fourteen parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the fourteenth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The fourteenth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has fifteen parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the fourteenth parameter of the method that this delegate encapsulates.
+ The type of the fifteenth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The fourteenth parameter of the method that this delegate encapsulates.
+ The fifteenth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that has sixteen parameters and returns a value of the type specified by the TResult parameter.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the fourteenth parameter of the method that this delegate encapsulates.
+ The type of the fifteenth parameter of the method that this delegate encapsulates.
+ The type of the sixteenth parameter of the method that this delegate encapsulates.
+ The type of the return value of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The fourteenth parameter of the method that this delegate encapsulates.
+ The fifteenth parameter of the method that this delegate encapsulates.
+ The sixteenth parameter of the method that this delegate encapsulates.
+ The return value of the method that this delegate encapsulates.
@@ -6317,513 +7803,266 @@
NotSupportedException with message like "DebugInfoGenerator created by CreatePdbGenerator can only be used with LambdaExpression.CompileToMethod."
-
+
- A simple hashset, built on Dictionary{K, V}
+ Determines if variables are closed over in nested lambdas and need to
+ be hoisted.
-
+
- LambdaCompiler is responsible for compiling individual lambda (LambdaExpression). The complete tree may
- contain multiple lambdas, the Compiler class is reponsible for compiling the whole tree, individual
- lambdas are then compiled by the LambdaCompiler.
-
-
- Dynamic Language Runtime Compiler.
- This part compiles lambdas.
+ Finds a delegate type using the types in the array.
+ We use the cache to avoid copying the array, and to cache the
+ created delegate type
-
+
- The value is true if a clearance was emitted and no new sequence point
- has been emitted since that.
-
-
-
-
- Creates a lambda compiler that will compile to a dynamic method
-
-
-
-
- Creates a lambda compiler that will compile into the provided Methodbuilder
-
-
-
-
- Creates a lambda compiler for an inlined lambda
-
-
-
-
- Compiler entry point
-
- LambdaExpression to compile.
- Debug info generator.
- The compiled delegate.
-
-
-
- Mutates the MethodBuilder parameter, filling in IL, parameters,
- and return type.
+ Finds a delegate type for a CallSite using the types in the ReadOnlyCollection of Expression.
- (probably shouldn't be modifying parameters/return type...)
+ We take the readonly collection of Expression explicitly to avoid allocating memory (an array
+ of types) on lookup of delegate types.
-
+
- Gets the argument slot corresponding to the parameter at the given
- index. Assumes that the method takes a certain number of prefix
- arguments, followed by the real parameters stored in Parameters
-
-
-
-
- Returns the index-th argument. This method provides access to the actual arguments
- defined on the lambda itself, and excludes the possible 0-th closure argument.
-
-
-
-
- Creates an unitialized field suitible for private implementation details
- Works with DynamicMethods or TypeBuilders.
-
-
-
-
- returns true if the expression is not empty, otherwise false.
-
-
-
-
- returns true if the expression is NOT empty and is not debug info,
- or a block that contains only insignificant expressions.
-
-
-
-
- Emits the expression and then either brtrue/brfalse to the label.
-
- True for brtrue, false for brfalse.
- The expression to emit.
- The label to conditionally branch to.
-
- This function optimizes equality and short circuiting logical
- operators to avoid double-branching, minimize instruction count,
- and generate similar IL to the C# compiler. This is important for
- the JIT to optimize patterns like:
- x != null AndAlso x.GetType() == typeof(SomeType)
-
- One optimization we don't do: we always emits at least one
- conditional branch to the label, and always possibly falls through,
- even if we know if the branch will always succeed or always fail.
- We do this to avoid generating unreachable code, which is fine for
- the CLR JIT, but doesn't verify with peverify.
+ Finds a delegate type for a CallSite using the MetaObject array.
- This kind of optimization could be implemented safely, by doing
- constant folding over conditionals and logical expressions at the
- tree level.
-
-
-
-
- Emits code which creates new instance of the delegateType delegate.
-
- Since the delegate is getting closed over the "Closure" argument, this
- cannot be used with virtual/instance methods (inner must be static method)
+ We take the array of MetaObject explicitly to avoid allocating memory (an array of types) on
+ lookup of delegate types.
-
+
- Emits a delegate to the method generated for the LambdaExpression.
- May end up creating a wrapper to match the requested delegate type.
-
- Lambda for which to generate a delegate
-
-
-
-
- Emits the lambda body. If inlined, the parameters should already be
- pushed onto the IL stack.
-
- The parent scope.
- true if the lambda is inlined; false otherwise.
-
- The emum to specify if the lambda is compiled with the tail call optimization.
-
-
-
-
- Update the flag with a new EmitAsTailCall flag
+ Creates a new delegate, or uses a func/action
+ Note: this method does not cache
-
+
- Update the flag with a new EmitExpressionStart flag
+ Describes the binding types that are used in MemberInitExpression objects.
-
+
- Update the flag with a new EmitAsType flag
+ A binding that represents initializing a member with the value of an expression.
-
+
- Generates code for this expression in a value position.
- This method will leave the value of the expression
- on the top of the stack typed as Type.
+ A binding that represents recursively initializing members of a member.
-
+
- Emits an expression and discards the result. For some nodes this emits
- more optimial code then EmitExpression/Pop
+ A binding that represents initializing a member of type or from a list of elements.
-
+
- Emits arguments to a call, and returns an array of writebacks that
- should happen after the call.
+ Represents an expression that has a binary operator.
-
-
- Emits arguments to a call, and returns an array of writebacks that
- should happen after the call. For emitting dynamic expressions, we
- need to skip the first parameter of the method (the call site).
-
-
-
-
- Gets the common test test value type of the SwitchExpression.
-
-
-
-
- Creates the label for this case.
- Optimization: if the body is just a goto, and we can branch
- to it, put the goto target directly in the jump table.
-
-
-
-
- Emits the start of a catch block. The exception value that is provided by the
- CLR is stored in the variable specified by the catch block or popped if no
- variable is provided.
-
-
-
-
- This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
- Contains helper methods called from dynamically generated methods.
-
-
-
-
- Quotes the provided expression tree.
-
- The expression to quote.
- The hoisted local state provided by the compiler.
- The actual hoisted local values.
- The quoted expression.
-
-
-
- Combines two runtime variable lists and returns a new list.
-
- The first list.
- The second list.
- The index array indicating which list to get variables from.
- The merged runtime variables.
-
-
-
- Gets the value of an item in an expando object.
-
- The expando object.
- The class of the expando object.
- The index of the member.
- The name of the member.
- true if the name should be matched ignoring case; false otherwise.
- The out parameter containing the value of the member.
- True if the member exists in the expando object, otherwise false.
-
-
-
- Sets the value of an item in an expando object.
-
- The expando object.
- The class of the expando object.
- The index of the member.
- The value of the member.
- The name of the member.
- true if the name should be matched ignoring case; false otherwise.
-
- Returns the index for the set member.
-
-
-
-
- Deletes the value of an item in an expando object.
-
- The expando object.
- The class of the expando object.
- The index of the member.
- The name of the member.
- true if the name should be matched ignoring case; false otherwise.
- true if the item was successfully removed; otherwise, false.
-
-
-
- Checks the version of the expando object.
-
- The expando object.
- The version to check.
- true if the version is equal; otherwise, false.
-
-
-
- Promotes an expando object from one class to a new class.
-
- The expando object.
- The old class of the expando object.
- The new class of the expando object.
-
-
-
- Creates an interface that can be used to modify closed over variables at runtime.
-
- The closure array.
- An array of indicies into the closure array where variables are found.
- An interface to access variables.
-
-
-
- Creates an interface that can be used to modify closed over variables at runtime.
-
- An interface to access variables.
-
-
-
- An interface to represent values of runtime variables.
-
-
-
-
- Count of the variables.
-
-
-
-
- An indexer to get/set the values of the runtime variables.
-
- An index of the runtime variable.
- The value of the runtime variable.
-
-
-
- Provides a list of variables, supporing read/write of the values
- Exposed via RuntimeVariablesExpression
-
-
-
-
- Provides a list of variables, supporing read/write of the values
- Exposed via RuntimeVariablesExpression
-
-
-
-
- CompilerScope is the data structure which the Compiler keeps information
- related to compiling scopes. It stores the following information:
- 1. Parent relationship (for resolving variables)
- 2. Information about hoisted variables
- 3. Information for resolving closures
-
- Instances are produced by VariableBinder, which does a tree walk
- looking for scope nodes: LambdaExpression and BlockExpression.
-
-
-
-
- parent scope, if any
-
-
-
-
- The expression node for this scope
- Can be LambdaExpression, BlockExpression, or CatchBlock
-
-
-
-
- True if this node corresponds to an IL method.
- Can only be true if the Node is a LambdaExpression.
- But inlined lambdas will have it set to false.
-
-
-
-
- Does this scope (or any inner scope) close over variables from any
- parent scope?
- Populated by VariableBinder
-
-
-
-
- Variables defined in this scope, and whether they're hoisted or not
- Populated by VariableBinder
-
-
-
-
- Each variable referenced within this scope, and how often it was referenced
- Populated by VariableBinder
-
-
-
-
- Scopes whose variables were merged into this one
-
- Created lazily as we create hundreds of compiler scopes w/o merging scopes when compiling rules.
-
-
-
-
- The scope's hoisted locals, if any.
- Provides storage for variables that are referenced from nested lambdas
-
-
-
-
- The closed over hoisted locals
-
-
-
-
- Mutable dictionary that maps non-hoisted variables to either local
- slots or argument slots
-
-
-
-
- Called when entering a lambda/block. Performs all variable allocation
- needed, including creating hoisted locals and IL locals for accessing
- parent locals
-
-
-
-
- Frees unnamed locals, clears state associated with this compiler
-
-
-
-
- Adds a new virtual variable corresponding to an IL local
-
-
-
-
- Resolve a local variable in this scope or a closed over scope
- Throws if the variable is defined
-
-
-
-
- This scope's hoisted locals, or the closed over locals, if any
- Equivalent to: _hoistedLocals ?? _closureHoistedLocals
-
-
-
-
- Represents a call to either static or an instance method.
-
-
-
-
- Provides an internal interface for accessing the arguments that multiple tree
- nodes (DynamicExpression, ElementInit, MethodCallExpression, InvocationExpression, NewExpression,
- and InexExpression).
-
- This enables two optimizations which reduce the size of the trees. The first is it enables
- the nodes to hold onto an IList of T instead of a ReadOnlyCollection. This saves the cost
- of allocating the ReadOnlyCollection for each node. The second is that it enables specialized
- subclasses to be created which hold onto a specific number of arguments. For example Block2,
- Block3, Block4. These nodes can therefore avoid allocating both a ReadOnlyCollection and an
- array for storing their elements saving 32 bytes per node.
-
- Meanwhile the nodes can continue to expose the original LINQ properties of ReadOnlyCollections. They
- do this by re-using 1 field for storing both the array or an element that would normally be stored
- in the array.
-
- For the array case the collection is typed to IList of T instead of ReadOnlyCollection of T.
- When the node is initially constructed it is an array. When the compiler accesses the members it
- uses this interface. If a user accesses the members the array is promoted to a ReadOnlyCollection.
-
- For the object case we store the 1st argument in a field typed to object and when the node is initially
- constructed this holds directly onto the Expression. When the compiler accesses the members
- it again uses this interface and the accessor for the 1st argument uses Expression.ReturnObject to
- return the object which handles the Expression or ReadOnlyCollection case. When the user accesses
- the ReadOnlyCollection then the object field is updated to hold directly onto the ReadOnlyCollection.
-
- It is important that the Expressions consistently return the same ReadOnlyCollection otherwise the
- re-writer will be broken and it would be a breaking change from LINQ v1. The problem is that currently
- users can rely on object identity to tell if the node has changed. Storing the readonly collection in
- an overloaded field enables us to both reduce memory usage as well as maintain compatibility and an
- easy to use external API.
-
-
-
+
Creates a new expression that is like this one, but using the
supplied children. If all of the children are the same, it will
return this expression.
- The property of the result.
- The property of the result.
+ The property of the result.
+ The property of the result.
+ The property of the result.
This expression if no children changed, or an expression with the updated children.
-
+
+
+ Reduces the binary expression node to a simpler expression.
+ If CanReduce returns true, this should return a valid expression.
+ This method is allowed to return another node which itself
+ must be reduced.
+
+ The reduced expression.
+
+
Dispatches to the specific visit method for this node type.
-
+
- Returns a new MethodCallExpression replacing the existing instance/args with the
- newly provided instance and args. Arguments can be null to use the existing
- arguments.
+ Gets a value that indicates whether the expression tree node can be reduced.
+
+
+
+
+ Gets the right operand of the binary operation.
+
+
+
+
+ Gets the left operand of the binary operation.
+
+
+
+
+ Gets the implementing method for the binary operation.
+
+
+
+
+ Gets the type conversion function that is used by a coalescing or compound assignment operation.
+
+
+
+
+ Gets a value that indicates whether the expression tree node represents a lifted call to an operator.
+
+
+
+
+ Gets a value that indicates whether the expression tree node represents a lifted call to an operator whose return type is lifted to a nullable type.
+
+
+
+
+ Represents a dynamic operation.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Makes a copy of this node replacing the args with the provided values. The
+ number of the args needs to match the number of the current block.
This helper is provided to allow re-writing of nodes to not depend on the specific optimized
- subclass of MethodCallExpression which is being used.
+ subclass of DynamicExpression which is being used.
-
+
- Returns the node type of this . (Inherited from .)
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
- The that represents this expression.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
-
+
- Gets the static type of the expression that this represents. (Inherited from .)
+ Gets the static type of the expression that this represents.
- The that represents the static type of the expression.
+ The that represents the static type of the expression.
-
+
- Gets the for the method to be called.
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the , which determines the runtime behavior of the
+ dynamic site.
-
+
- Gets the that represents the instance
- for instance method calls or null for static method cals.
+ Gets the type of the delegate used by the .
-
+
- Gets a collection of expressions that represent arguments to the method call.
+ Gets the arguments to the dynamic operation.
+
+
+
+
+ Generates debug information for lambdas in an expression tree.
+
+
+
+
+ Creates PDB symbol generator.
+
+ PDB symbol generator.
+
+
+
+ Marks a sequence point.
+
+ The lambda being generated.
+ IL offset where to mark the sequence point.
+ Debug informaton corresponding to the sequence point.
+
+
+
+ Represents initializing members of a member of a newly created object.
+
+
+ Use the factory methods to create a .
+ The value of the property of a object is .
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the bindings that describe how to initialize the members of a member.
+
+
+
+
+ Represents an expression that applies a delegate or lambda expression to a list of argument expressions.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the delegate or lambda expression to be applied.
+
+
+
+
+ Gets the arguments that the delegate or lambda expression is applied to.
@@ -6833,315 +8072,10 @@
The delegate type.
-
+
- Represents the dynamic delete member operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The name of the member to delete.
- true if the name should be matched ignoring case; false otherwise.
-
-
-
- Performs the binding of the dynamic delete member operation if the target dynamic object cannot bind.
-
- The target of the dynamic delete member operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic delete member operation if the target dynamic object cannot bind.
-
- The target of the dynamic delete member operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic delete member operation.
-
- The target of the dynamic delete member operation.
- An array of arguments of the dynamic delete member operation.
- The representing the result of the binding.
-
-
-
- Gets the name of the member to delete.
-
-
-
-
- Gets the value indicating if the string comparison should ignore the case of the member name.
-
-
-
-
- The result type of the operation.
-
-
-
-
- Represents the create dynamic operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new intsance of the .
-
- The signature of the arguments at the call site.
-
-
-
- Performs the binding of the dynamic create operation if the target dynamic object cannot bind.
-
- The target of the dynamic create operation.
- The arguments of the dynamic create operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic create operation if the target dynamic object cannot bind.
-
- The target of the dynamic create operation.
- The arguments of the dynamic create operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic create operation.
-
- The target of the dynamic create operation.
- An array of arguments of the dynamic create operation.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the signature of the arguments at the call site.
-
-
-
-
- Represents the invoke member dynamic operation at the call site,
- providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The name of the member to invoke.
- true if the name should be matched ignoring case; false otherwise.
- The signature of the arguments at the call site.
-
-
-
- Performs the binding of the dynamic invoke member operation.
-
- The target of the dynamic invoke member operation.
- An array of arguments of the dynamic invoke member operation.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic invoke member operation if the target dynamic object cannot bind.
-
- The target of the dynamic invoke member operation.
- The arguments of the dynamic invoke member operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic invoke member operation if the target dynamic object cannot bind.
-
- The target of the dynamic invoke member operation.
- The arguments of the dynamic invoke member operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic invoke operation if the target dynamic object cannot bind.
-
- The target of the dynamic invoke operation.
- The arguments of the dynamic invoke operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
- This method is called by the target when the target implements the invoke member operation
- as a sequence of get member, and invoke, to let the
- request the binding of the invoke operation only.
-
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the name of the member to invoke.
-
-
-
-
- Gets the value indicating if the string comparison should ignore the case of the member name.
-
-
-
-
- Gets the signature of the arguments at the call site.
-
-
-
-
- Provides a wrapper around an IArgumentProvider which exposes the argument providers
- members out as an IList of Expression. This is used to avoid allocating an array
- which needs to be stored inside of a ReadOnlyCollection. Instead this type has
- the same amount of overhead as an array without duplicating the storage of the
- elements. This ensures that internally we can avoid creating and copying arrays
- while users of the Expression trees also don't pay a size penalty for this internal
- optimization. See IArgumentProvider for more general information on the Expression
- tree optimizations being used here.
-
-
-
-
- Wraps ILGenerator with code that tracks the current IL offset as instructions are emitted into the IL stream.
-
-
-
-
- Contains compiler state corresponding to a LabelTarget
- See also LabelScopeInfo.
-
-
-
-
- Indicates if it is legal to emit a "branch" instruction based on
- currently available information. Call the Reference method before
- using this property.
-
-
-
-
- Returns true if we can jump into this node
-
-
-
-
- Emits or clears a sequence point for debug information.
-
- This allows the debugger to highlight the correct source code when
- debugging.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Gets the start line of this .
-
-
-
-
- Gets the start column of this .
-
-
-
-
- Gets the end line of this .
-
-
-
-
- Gets the end column of this .
-
-
-
-
- Gets the that represents the source file.
-
-
-
-
- Gets the value to indicate if the is for clearing a sequence point.
-
-
-
-
- Represents the invoke dynamic operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The signature of the arguments at the call site.
-
-
-
- Performs the binding of the dynamic invoke operation if the target dynamic object cannot bind.
-
- The target of the dynamic invoke operation.
- The arguments of the dynamic invoke operation.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic invoke operation if the target dynamic object cannot bind.
-
- The target of the dynamic invoke operation.
- The arguments of the dynamic invoke operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic invoke operation.
-
- The target of the dynamic invoke operation.
- An array of arguments of the dynamic invoke operation.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the signature of the arguments at the call site.
-
-
-
-
- A simple dictionary of queues, keyed off a particular type
- This is useful for storing free lists of variables
+ A special subtype of BlockExpression that indicates to the compiler
+ that this block is a spilled expression and should not allow jumps in.
@@ -7216,2548 +8150,6 @@
Gets the representing the fault block.
-
-
- Represents initializing the elements of a collection member of a newly created object.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the element initializers for initializing a collection member of a newly created object.
-
-
-
-
- Class that contains helper methods for DLR CallSites.
-
-
-
-
- Checks if a is internally used by DLR and should not
- be displayed on the language code's stack.
-
- The input
-
- True if the input is internally used by DLR and should not
- be displayed on the language code's stack. Otherwise, false.
-
-
-
-
- Represents an operation between an expression and a type.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- Gets the expression operand of a type test operation.
-
-
-
-
- Gets the type operand of a type test operation.
-
-
-
-
- Represents the dynamic delete index operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The signature of the arguments at the call site.
-
-
-
- Performs the binding of the dynamic delete index operation.
-
- The target of the dynamic delete index operation.
- An array of arguments of the dynamic delete index operation.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic delete index operation if the target dynamic object cannot bind.
-
- The target of the dynamic delete index operation.
- The arguments of the dynamic delete index operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic delete index operation if the target dynamic object cannot bind.
-
- The target of the dynamic delete index operation.
- The arguments of the dynamic delete index operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the signature of the arguments at the call site.
-
-
-
-
- Holds a reference to a value.
-
- The type of the value that the references.
-
-
-
- Defines a property for accessing the value that an object references.
-
-
-
-
- Gets or sets the value the object references.
-
-
-
-
- Gets the strongly typed value associated with the
- This is explicitly exposed as a field instead of a property to enable loading the address of the field.
-
-
-
-
- Initializes a new StrongBox which can receive a value when used in a reference call.
-
-
-
-
- Initializes a new with the specified value.
-
- A value that the will reference.
-
-
-
- Represents a constructor call.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Gets the called constructor.
-
-
-
-
- Gets the arguments to the constructor.
-
-
-
-
- Gets the members that can retrieve the values of the fields that were initialized with constructor arguments.
-
-
-
-
- Represents accessing a field or property.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the field or property to be accessed.
-
-
-
-
- Gets the containing object of the field or property.
-
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Represents assignment to a member of an object.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the which represents the object whose member is being assigned to.
-
-
-
-
- Represents a constructor call that has a collection initializer.
-
-
- Use the factory methods to create a ListInitExpression.
- The value of the NodeType property of a ListInitExpression is ListInit.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Reduces the binary expression node to a simpler expression.
- If CanReduce returns true, this should return a valid expression.
- This method is allowed to return another node which itself
- must be reduced.
-
- The reduced expression.
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Gets a value that indicates whether the expression tree node can be reduced.
-
-
-
-
- Gets the expression that contains a call to the constructor of a collection type.
-
-
-
-
- Gets the element initializers that are used to initialize a collection.
-
-
-
-
- Represents a set of binding restrictions on the under which the dynamic binding is valid.
-
-
-
-
- Represents an empty set of binding restrictions. This field is read only.
-
-
-
-
- Merges the set of binding restrictions with the current binding restrictions.
-
- The set of restrictions with which to merge the current binding restrictions.
- The new set of binding restrictions.
-
-
-
- Creates the binding restriction that check the expression for runtime type identity.
-
- The expression to test.
- The exact type to test.
- The new binding restrictions.
-
-
-
- The method takes a DynamicMetaObject, and returns an instance restriction for testing null if the object
- holds a null value, otherwise returns a type restriction.
-
-
-
-
- Creates the binding restriction that checks the expression for object instance identity.
-
- The expression to test.
- The exact object instance to test.
- The new binding restrictions.
-
-
-
- Creates the binding restriction that checks the expression for arbitrary immutable properties.
-
- The expression expression the restrictions.
- The new binding restrictions.
-
- By convention, the general restrictions created by this method must only test
- immutable object properties.
-
-
-
-
- Combines binding restrictions from the list of instances into one set of restrictions.
-
- The list of instances from which to combine restrictions.
- The new set of binding restrictions.
-
-
-
- Creates the representing the binding restrictions.
-
- The expression tree representing the restrictions.
-
-
-
- Builds a balanced tree of AndAlso nodes.
- We do this so the compiler won't stack overflow if we have many
- restrictions.
-
-
-
-
- Represents the dynamic get member operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The name of the member to get.
- true if the name should be matched ignoring case; false otherwise.
-
-
-
- Performs the binding of the dynamic get member operation if the target dynamic object cannot bind.
-
- The target of the dynamic get member operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic get member operation if the target dynamic object cannot bind.
-
- The target of the dynamic get member operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic get member operation.
-
- The target of the dynamic get member operation.
- An array of arguments of the dynamic get member operation.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the name of the member to get.
-
-
-
-
- Gets the value indicating if the string comparison should ignore the case of the member name.
-
-
-
-
- This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
- Represents the runtime state of a dynamically generated method.
-
-
-
-
- Represents the non-trivial constants and locally executable expressions that are referenced by a dynamically generated method.
-
-
-
-
- Represents the hoisted local variables from the parent context.
-
-
-
-
- Creates an object to hold state of a dynamically generated method.
-
- The constant values used by the method.
- The hoisted local variables from the parent context.
-
-
-
- Represents a control expression that handles multiple selections by passing control to a .
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- Gets the test for the switch.
-
-
-
-
- Gets the collection of objects for the switch.
-
-
-
-
- Gets the test for the switch.
-
-
-
-
- Gets the equality comparison method, if any.
-
-
-
-
- Represents a named parameter expression.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- The Name of the parameter or variable.
-
-
-
-
- Indicates that this ParameterExpression is to be treated as a ByRef parameter.
-
-
-
-
- Specialized subclass to avoid holding onto the byref flag in a
- parameter expression. This version always holds onto the expression
- type explicitly and therefore derives from TypedParameterExpression.
-
-
-
-
- Specialized subclass which holds onto the type of the expression for
- uncommon types.
-
-
-
-
- Generic type to avoid needing explicit storage for primitive data types
- which are commonly used.
-
-
-
-
- Creates a node.
- This captures a block of code that is similar to a .NET method body.
-
-
- Lambda expressions take input through parameters and are expected to be fully bound.
-
-
-
-
- Produces a delegate that represents the lambda expression.
-
- A delegate containing the compiled version of the lambda.
-
-
-
- Produces a delegate that represents the lambda expression.
-
- Debugging information generator used by the compiler to mark sequence points and annotate local variables.
- A delegate containing the compiled version of the lambda.
-
-
-
- Compiles the lambda into a method definition.
-
- A which will be used to hold the lambda's IL.
-
-
-
- Compiles the lambda into a method definition and custom debug information.
-
- A which will be used to hold the lambda's IL.
- Debugging information generator used by the compiler to mark sequence points and annotate local variables.
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Gets the parameters of the lambda expression.
-
-
-
-
- Gets the name of the lambda expression.
-
- Used for debugging purposes.
-
-
-
- Gets the body of the lambda expression.
-
-
-
-
- Gets the return type of the lambda expression.
-
-
-
-
- Gets the value that indicates if the lambda expression will be compiled with
- tail call optimization.
-
-
-
-
- Defines a node.
- This captures a block of code that is similar to a .NET method body.
-
- The type of the delegate.
-
- Lambda expressions take input through parameters and are expected to be fully bound.
-
-
-
-
- Produces a delegate that represents the lambda expression.
-
- A delegate containing the compiled version of the lambda.
-
-
-
- Produces a delegate that represents the lambda expression.
-
- Debugging information generator used by the compiler to mark sequence points and annotate local variables.
- A delegate containing the compiled version of the lambda.
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The Body property of the result.
- The Parameters property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Represents the default value of a type or an empty expression.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- Represents a catch statement in a try block.
- This must have the same return type (i.e., the type of ) as the try block it is associated with.
-
-
-
-
- Returns a that represents the current .
-
- A that represents the current .
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets a reference to the object caught by this handler.
-
-
-
-
- Gets the type of this handler catches.
-
-
-
-
- Gets the body of the catch block.
-
-
-
-
- Gets the body of the 's filter.
-
-
-
-
- Represents the binary dynamic operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the class.
-
- The binary operation kind.
-
-
-
- Performs the binding of the binary dynamic operation if the target dynamic object cannot bind.
-
- The target of the dynamic binary operation.
- The right hand side operand of the dynamic binary operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the binary dynamic operation if the target dynamic object cannot bind.
-
- The target of the dynamic binary operation.
- The right hand side operand of the dynamic binary operation.
- The binding result in case the binding fails, or null.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic binary operation.
-
- The target of the dynamic operation.
- An array of arguments of the dynamic operation.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- The binary operation kind.
-
-
-
-
- Represents one case of a .
-
-
-
-
- Returns a that represents the current .
-
- A that represents the current .
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the values of this case. This case is selected for execution when the matches any of these values.
-
-
-
-
- Gets the body of this case.
-
-
-
-
- Represents an expression that has a constant value.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- Gets the value of the constant expression.
-
-
-
-
- Represents the dynamic set member operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The name of the member to get.
- true if the name should be matched ignoring case; false otherwise.
-
-
-
- Performs the binding of the dynamic set member operation.
-
- The target of the dynamic set member operation.
- An array of arguments of the dynamic set member operation.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic set member operation if the target dynamic object cannot bind.
-
- The target of the dynamic set member operation.
- The value to set to the member.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic set member operation if the target dynamic object cannot bind.
-
- The target of the dynamic set member operation.
- The value to set to the member.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the name of the member to get.
-
-
-
-
- Gets the value indicating if the string comparison should ignore the case of the member name.
-
-
-
-
- Encapsulates a method that has no parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the return value of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has one parameter and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has two parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has three parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has four parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has five parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has six parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has seven parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has eight parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has nine parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has ten parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has eleven parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has twelve parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has thirteen parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has fourteen parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the fourteenth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The fourteenth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has fifteen parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the fourteenth parameter of the method that this delegate encapsulates.
- The type of the fifteenth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The fourteenth parameter of the method that this delegate encapsulates.
- The fifteenth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that has sixteen parameters and returns a value of the type specified by the TResult parameter.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the fourteenth parameter of the method that this delegate encapsulates.
- The type of the fifteenth parameter of the method that this delegate encapsulates.
- The type of the sixteenth parameter of the method that this delegate encapsulates.
- The type of the return value of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The fourteenth parameter of the method that this delegate encapsulates.
- The fifteenth parameter of the method that this delegate encapsulates.
- The sixteenth parameter of the method that this delegate encapsulates.
- The return value of the method that this delegate encapsulates.
-
-
-
- If the result of a TypeBinaryExpression is known statically, this
- returns the result, otherwise it returns null, meaning we'll need
- to perform the IsInst instruction at runtime.
-
- The result of this function must be equivalent to IsInst, or
- null.
-
-
-
-
- If the result of a unary TypeAs expression is known statically, this
- returns the result, otherwise it returns null, meaning we'll need
- to perform the IsInst instruction at runtime.
-
- The result of this function must be equivalent to IsInst, or
- null.
-
-
-
-
- If the result of an isinst opcode is known statically, this
- returns the result, otherwise it returns null, meaning we'll need
- to perform the IsInst instruction at runtime.
-
- The result of this function must be equivalent to IsInst, or
- null.
-
-
-
-
- Used to denote the target of a .
-
-
-
-
- Returns a that represents the current .
-
- A that represents the current .
-
-
-
- Gets the name of the label.
-
- The label's name is provided for information purposes only.
-
-
-
- The type of value that is passed when jumping to the label
- (or System.Void if no value should be passed).
-
-
-
-
- Finds a delegate type using the types in the array.
- We use the cache to avoid copying the array, and to cache the
- created delegate type
-
-
-
-
- Finds a delegate type for a CallSite using the types in the ReadOnlyCollection of Expression.
-
- We take the readonly collection of Expression explicitly to avoid allocating memory (an array
- of types) on lookup of delegate types.
-
-
-
-
- Finds a delegate type for a CallSite using the MetaObject array.
-
- We take the array of MetaObject explicitly to avoid allocating memory (an array of types) on
- lookup of delegate types.
-
-
-
-
- Creates a new delegate, or uses a func/action
- Note: this method does not cache
-
-
-
-
- This type tracks "runtime" constants--live objects that appear in
- ConstantExpression nodes and must be bound to the delegate.
-
-
-
-
- The list of constants in the order they appear in the constant array
-
-
-
-
- The index of each constant in the constant array
-
-
-
-
- Each constant referenced within this lambda, and how often it was referenced
-
-
-
-
- IL locals for storing frequently used constants
-
-
-
-
- Called by VariableBinder. Adds the constant to the list (if needed)
- and increases the reference count by one
-
-
-
-
- Emits a live object as a constant
-
-
-
-
- Emit code to cache frequently used constants into IL locals,
- instead of pulling them out of the array each time
-
-
-
-
- Constants can emit themselves as different types
- For caching purposes, we need to treat each distinct Type as a
- seperate thing to cache. (If we have to cast it on the way out, it
- ends up using a JIT temp and defeats the purpose of caching the
- value in a local)
-
-
-
-
- Represents a dynamically assigned class. Expando objects which share the same
- members will share the same class. Classes are dynamically assigned as the
- expando object gains members.
-
-
-
-
- Constructs the empty ExpandoClass. This is the class used when an
- empty Expando object is initially constructed.
-
-
-
-
- Constructs a new ExpandoClass that can hold onto the specified keys. The
- keys must be sorted ordinally. The hash code must be precalculated for
- the keys.
-
-
-
-
- Finds or creates a new ExpandoClass given the existing set of keys
- in this ExpandoClass plus the new key to be added. Members in an
- ExpandoClass are always stored case sensitively.
-
-
-
-
- Gets the lists of transitions that are valid from this ExpandoClass
- to an ExpandoClass whos keys hash to the apporopriate hash code.
-
-
-
-
- Gets the index at which the value should be stored for the specified name.
-
-
-
-
- Gets the index at which the value should be stored for the specified name
- case sensitively. Returns the index even if the member is marked as deleted.
-
-
-
-
- Gets the index at which the value should be stored for the specified name,
- the method is only used in the case-insensitive case.
-
- the name of the member
- The ExpandoObject associated with the class
- that is used to check if a member has been deleted.
-
- the exact match if there is one
- if there is exactly one member with case insensitive match, return it
- otherwise we throw AmbiguousMatchException.
-
-
-
-
- Gets the names of the keys that can be stored in the Expando class. The
- list is sorted ordinally.
-
-
-
-
- Creates instnace of TrueReadOnlyCollection, wrapping passed in array.
- !!! DOES NOT COPY THE ARRAY !!!
-
-
-
-
- Generator of PDB debugging information for expression trees.
-
-
-
-
- Represents a label, which can be placed in any context. If
- it is jumped to, it will get the value provided by the corresponding
- . Otherwise, it gets the value in . If the
- equals System.Void, no value should be provided.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- The which this label is associated with.
-
-
-
-
- The value of the when the label is reached through
- normal control flow (e.g. is not jumped to).
-
-
-
-
- Represents the initialization of a list.
-
-
-
-
- Creates a representation of the node.
-
- A representation of the node.
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the used to add elements to the object.
-
-
-
-
- Gets the list of elements to be added to the object.
-
-
-
-
- Output a given expression tree to a string.
-
-
-
-
- Output a given member binding to a string.
-
-
-
-
- Output a given ElementInit to a string.
-
-
-
-
- Provides a simple class that can be inherited from to create an object with dynamic behavior
- at runtime. Subclasses can override the various binder methods (GetMember, SetMember, Call, etc...)
- to provide custom behavior that will be invoked at runtime.
-
- If a method is not overridden then the DynamicObject does not directly support that behavior and
- the call site will determine how the binding should be performed.
-
-
-
-
- Enables derived types to create a new instance of DynamicObject. DynamicObject instances cannot be
- directly instantiated because they have no implementation of dynamic behavior.
-
-
-
-
- Provides the implementation of getting a member. Derived classes can override
- this method to customize behavior. When not overridden the call site requesting the
- binder determines the behavior.
-
- The binder provided by the call site.
- The result of the get operation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of setting a member. Derived classes can override
- this method to customize behavior. When not overridden the call site requesting the
- binder determines the behavior.
-
- The binder provided by the call site.
- The value to set.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of deleting a member. Derived classes can override
- this method to customize behavior. When not overridden the call site requesting the
- binder determines the behavior.
-
- The binder provided by the call site.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of calling a member. Derived classes can override
- this method to customize behavior. When not overridden the call site requesting the
- binder determines the behavior.
-
- The binder provided by the call site.
- The arguments to be used for the invocation.
- The result of the invocation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of converting the DynamicObject to another type. Derived classes
- can override this method to customize behavior. When not overridden the call site
- requesting the binder determines the behavior.
-
- The binder provided by the call site.
- The result of the conversion.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of creating an instance of the DynamicObject. Derived classes
- can override this method to customize behavior. When not overridden the call site requesting
- the binder determines the behavior.
-
- The binder provided by the call site.
- The arguments used for creation.
- The created instance.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of invoking the DynamicObject. Derived classes can
- override this method to customize behavior. When not overridden the call site requesting
- the binder determines the behavior.
-
- The binder provided by the call site.
- The arguments to be used for the invocation.
- The result of the invocation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of performing a binary operation. Derived classes can
- override this method to customize behavior. When not overridden the call site requesting
- the binder determines the behavior.
-
- The binder provided by the call site.
- The right operand for the operation.
- The result of the operation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of performing a unary operation. Derived classes can
- override this method to customize behavior. When not overridden the call site requesting
- the binder determines the behavior.
-
- The binder provided by the call site.
- The result of the operation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of performing a get index operation. Derived classes can
- override this method to customize behavior. When not overridden the call site requesting
- the binder determines the behavior.
-
- The binder provided by the call site.
- The indexes to be used.
- The result of the operation.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of performing a set index operation. Derived classes can
- override this method to custmize behavior. When not overridden the call site requesting
- the binder determines the behavior.
-
- The binder provided by the call site.
- The indexes to be used.
- The value to set.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Provides the implementation of performing a delete index operation. Derived classes
- can override this method to custmize behavior. When not overridden the call site
- requesting the binder determines the behavior.
-
- The binder provided by the call site.
- The indexes to be deleted.
- true if the operation is complete, false if the call site should determine behavior.
-
-
-
- Returns the enumeration of all dynamic member names.
-
- The list of dynamic member names.
-
-
-
- The provided MetaObject will dispatch to the Dynamic virtual methods.
- The object can be encapsulated inside of another MetaObject to
- provide custom behavior for individual actions.
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic that returns a result
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic that returns a result
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic, but uses one of the arguments for
- the result.
-
-
-
-
- Helper method for generating a MetaObject which calls a
- specific method on Dynamic, but uses one of the arguments for
- the result.
-
-
-
-
- Checks if the derived type has overridden the specified method. If there is no
- implementation for the method provided then Dynamic falls back to the base class
- behavior which lets the call site determine how the binder is performed.
-
-
-
-
- Returns a Restrictions object which includes our current restrictions merged
- with a restriction limiting our type
-
-
-
-
- Returns our Expression converted to DynamicObject
-
-
-
-
- Wraps the provided enumerable into a ReadOnlyCollection{T}
-
- Copies all of the data into a new array, so the data can't be
- changed after creation. The exception is if the enumerable is
- already a ReadOnlyCollection{T}, in which case we just return it.
-
-
-
-
- Represents an expression that has a binary operator.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Reduces the binary expression node to a simpler expression.
- If CanReduce returns true, this should return a valid expression.
- This method is allowed to return another node which itself
- must be reduced.
-
- The reduced expression.
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Gets a value that indicates whether the expression tree node can be reduced.
-
-
-
-
- Gets the right operand of the binary operation.
-
-
-
-
- Gets the left operand of the binary operation.
-
-
-
-
- Gets the implementing method for the binary operation.
-
-
-
-
- Gets the type conversion function that is used by a coalescing or compound assignment operation.
-
-
-
-
- Gets a value that indicates whether the expression tree node represents a lifted call to an operator.
-
-
-
-
- Gets a value that indicates whether the expression tree node represents a lifted call to an operator whose return type is lifted to a nullable type.
-
-
-
-
- Represents an expression that has a unary operator.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Reduces the expression node to a simpler expression.
- If CanReduce returns true, this should return a valid expression.
- This method is allowed to return another node which itself
- must be reduced.
-
- The reduced expression.
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Gets the operand of the unary operation.
-
- An that represents the operand of the unary operation.
-
-
-
- Gets the implementing method for the unary operation.
-
- The that represents the implementing method.
-
-
-
- Gets a value that indicates whether the expression tree node represents a lifted call to an operator.
-
- true if the node represents a lifted call; otherwise, false.
-
-
-
- Gets a value that indicates whether the expression tree node represents a lifted call to an operator whose return type is lifted to a nullable type.
-
- true if the operator's return type is lifted to a nullable type; otherwise, false.
-
-
-
- Gets a value that indicates whether the expression tree node can be reduced.
-
-
-
-
- Represents an expression that applies a delegate or lambda expression to a list of argument expressions.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
-
- The of the expression.
-
-
-
- Gets the delegate or lambda expression to be applied.
-
-
-
-
- Gets the arguments that the delegate or lambda expression is applied to.
-
-
-
-
- Describes arguments in the dynamic binding process.
-
-
- ArgumentCount - all inclusive number of arguments.
- ArgumentNames - names for those arguments that are named.
-
- Argument names match to the argument values in left to right order
- and last name corresponds to the last argument.
-
- Example:
- Foo(arg1, arg2, arg3, name1 = arg4, name2 = arg5, name3 = arg6)
-
- will correspond to:
- ArgumentCount: 6
- ArgumentNames: {"name1", "name2", "name3"}
-
-
-
-
- Creates a new PositionalArgumentInfo.
-
- The number of arguments.
- The argument names.
- The new CallInfo
-
-
-
- Creates a new CallInfo that represents arguments in the dynamic binding process.
-
- The number of arguments.
- The argument names.
- The new CallInfo
-
-
-
- Serves as a hash function for the current CallInfo.
-
- A hash code for the current CallInfo.
-
-
-
- Determines whether the specified CallInfo instance is considered equal to the current.
-
- The instance of CallInfo to compare with the current instance.
- true if the specified instance is equal to the current one otherwise, false.
-
-
-
- The number of arguments.
-
-
-
-
- The argument names.
-
-
-
-
- The builder for read only collection.
-
- The type of the collection element.
-
-
-
- Constructs a ReadOnlyCollectionBuilder.
-
-
-
-
- Constructs a ReadOnlyCollectionBuilder with a given initial capacity.
- The contents are empty but builder will have reserved room for the given
- number of elements before any reallocations are required.
-
-
-
-
- Constructs a ReadOnlyCollectionBuilder, copying contents of the given collection.
-
-
-
-
-
- Returns the index of the first occurrence of a given value in the builder.
-
- An item to search for.
- The index of the first occurrence of an item.
-
-
-
- Inserts an item to the at the specified index.
-
- The zero-based index at which item should be inserted.
- The object to insert into the .
-
-
-
- Removes the item at the specified index.
-
- The zero-based index of the item to remove.
-
-
-
- Adds an item to the .
-
- The object to add to the .
-
-
-
- Removes all items from the .
-
-
-
-
- Determines whether the contains a specific value
-
- the object to locate in the .
- true if item is found in the ; otherwise, false.
-
-
-
- Copies the elements of the to an ,
- starting at particular index.
-
- The one-dimensional that is the destination of the elements copied from .
- The zero-based index in array at which copying begins.
-
-
-
- Removes the first occurrence of a specific object from the .
-
- The object to remove from the .
- true if item was successfully removed from the ;
- otherwise, false. This method also returns false if item is not found in the original .
-
-
-
-
- Returns an enumerator that iterates through the collection.
-
- A that can be used to iterate through the collection.
-
-
-
- Reverses the order of the elements in the entire .
-
-
-
-
- Reverses the order of the elements in the specified range.
-
- The zero-based starting index of the range to reverse.
- The number of elements in the range to reverse.
-
-
-
- Copies the elements of the to a new array.
-
- An array containing copies of the elements of the .
-
-
-
- Creates a containing all of the the elements of the ,
- avoiding copying the elements to the new array if possible. Resets the after the
- has been created.
-
- A new instance of .
-
-
-
- Gets and sets the capacity of this ReadOnlyCollectionBuilder
-
-
-
-
- Returns number of elements in the ReadOnlyCollectionBuilder.
-
-
-
-
- Gets or sets the element at the specified index.
-
- The zero-based index of the element to get or set.
- The element at the specified index.
-
-
-
- Provides a dictionary-like object used for caches which holds onto a maximum
- number of elements specified at construction time.
-
- This class is not thread safe.
-
-
-
-
- Creates a dictionary-like object used for caches.
-
- The maximum number of elements to store.
-
-
-
- Tries to get the value associated with 'key', returning true if it's found and
- false if it's not present.
-
-
-
-
- Adds a new element to the cache, replacing and moving it to the front if the
- element is already present.
-
-
-
-
- Returns the value associated with the given key, or throws KeyNotFoundException
- if the key is not present.
-
-
-
-
- Encapsulates a method that takes no parameters and does not return a value.
-
-
-
-
- Encapsulates a method that takes two parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes three parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes four parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes five parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes six parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes seven parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes eight parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes nine parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes ten parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes eleven parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes twelve parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes thirteen parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes fourteen parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the fourteenth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The fourteenth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes fifteen parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the fourteenth parameter of the method that this delegate encapsulates.
- The type of the fifteenth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The fourteenth parameter of the method that this delegate encapsulates.
- The fifteenth parameter of the method that this delegate encapsulates.
-
-
-
- Encapsulates a method that takes sixteen parameters and does not return a value.
-
- The type of the first parameter of the method that this delegate encapsulates.
- The type of the second parameter of the method that this delegate encapsulates.
- The type of the third parameter of the method that this delegate encapsulates.
- The type of the fourth parameter of the method that this delegate encapsulates.
- The type of the fifth parameter of the method that this delegate encapsulates.
- The type of the sixth parameter of the method that this delegate encapsulates.
- The type of the seventh parameter of the method that this delegate encapsulates.
- The type of the eighth parameter of the method that this delegate encapsulates.
- The type of the ninth parameter of the method that this delegate encapsulates.
- The type of the tenth parameter of the method that this delegate encapsulates.
- The type of the eleventh parameter of the method that this delegate encapsulates.
- The type of the twelfth parameter of the method that this delegate encapsulates.
- The type of the thirteenth parameter of the method that this delegate encapsulates.
- The type of the fourteenth parameter of the method that this delegate encapsulates.
- The type of the fifteenth parameter of the method that this delegate encapsulates.
- The type of the sixteenth parameter of the method that this delegate encapsulates.
- The first parameter of the method that this delegate encapsulates.
- The second parameter of the method that this delegate encapsulates.
- The third parameter of the method that this delegate encapsulates.
- The fourth parameter of the method that this delegate encapsulates.
- The fifth parameter of the method that this delegate encapsulates.
- The sixth parameter of the method that this delegate encapsulates.
- The seventh parameter of the method that this delegate encapsulates.
- The eighth parameter of the method that this delegate encapsulates.
- The ninth parameter of the method that this delegate encapsulates.
- The tenth parameter of the method that this delegate encapsulates.
- The eleventh parameter of the method that this delegate encapsulates.
- The twelfth parameter of the method that this delegate encapsulates.
- The thirteenth parameter of the method that this delegate encapsulates.
- The fourteenth parameter of the method that this delegate encapsulates.
- The fifteenth parameter of the method that this delegate encapsulates.
- The sixteenth parameter of the method that this delegate encapsulates.
-
Describes the node types for the nodes of an expression tree.
@@ -10188,6 +8580,1371 @@
A node that represents a false condition value.
+
+
+ Creates instnace of TrueReadOnlyCollection, wrapping passed in array.
+ !!! DOES NOT COPY THE ARRAY !!!
+
+
+
+
+ Holds a reference to a value.
+
+ The type of the value that the references.
+
+
+
+ Defines a property for accessing the value that an object references.
+
+
+
+
+ Gets or sets the value the object references.
+
+
+
+
+ Gets the strongly typed value associated with the
+ This is explicitly exposed as a field instead of a property to enable loading the address of the field.
+
+
+
+
+ Initializes a new StrongBox which can receive a value when used in a reference call.
+
+
+
+
+ Initializes a new with the specified value.
+
+ A value that the will reference.
+
+
+
+ The builder for read only collection.
+
+ The type of the collection element.
+
+
+
+ Constructs a ReadOnlyCollectionBuilder.
+
+
+
+
+ Constructs a ReadOnlyCollectionBuilder with a given initial capacity.
+ The contents are empty but builder will have reserved room for the given
+ number of elements before any reallocations are required.
+
+
+
+
+ Constructs a ReadOnlyCollectionBuilder, copying contents of the given collection.
+
+
+
+
+
+ Returns the index of the first occurrence of a given value in the builder.
+
+ An item to search for.
+ The index of the first occurrence of an item.
+
+
+
+ Inserts an item to the at the specified index.
+
+ The zero-based index at which item should be inserted.
+ The object to insert into the .
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+
+
+ Adds an item to the .
+
+ The object to add to the .
+
+
+
+ Removes all items from the .
+
+
+
+
+ Determines whether the contains a specific value
+
+ the object to locate in the .
+ true if item is found in the ; otherwise, false.
+
+
+
+ Copies the elements of the to an ,
+ starting at particular index.
+
+ The one-dimensional that is the destination of the elements copied from .
+ The zero-based index in array at which copying begins.
+
+
+
+ Removes the first occurrence of a specific object from the .
+
+ The object to remove from the .
+ true if item was successfully removed from the ;
+ otherwise, false. This method also returns false if item is not found in the original .
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+ A that can be used to iterate through the collection.
+
+
+
+ Reverses the order of the elements in the entire .
+
+
+
+
+ Reverses the order of the elements in the specified range.
+
+ The zero-based starting index of the range to reverse.
+ The number of elements in the range to reverse.
+
+
+
+ Copies the elements of the to a new array.
+
+ An array containing copies of the elements of the .
+
+
+
+ Creates a containing all of the the elements of the ,
+ avoiding copying the elements to the new array if possible. Resets the after the
+ has been created.
+
+ A new instance of .
+
+
+
+ Gets and sets the capacity of this ReadOnlyCollectionBuilder
+
+
+
+
+ Returns number of elements in the ReadOnlyCollectionBuilder.
+
+
+
+
+ Gets or sets the element at the specified index.
+
+ The zero-based index of the element to get or set.
+ The element at the specified index.
+
+
+
+ This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
+ Represents the runtime state of a dynamically generated method.
+
+
+
+
+ Represents the non-trivial constants and locally executable expressions that are referenced by a dynamically generated method.
+
+
+
+
+ Represents the hoisted local variables from the parent context.
+
+
+
+
+ Creates an object to hold state of a dynamically generated method.
+
+ The constant values used by the method.
+ The hoisted local variables from the parent context.
+
+
+
+ Represents calling a constructor and initializing one or more members of the new object.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Reduces the to a simpler expression.
+ If CanReduce returns true, this should return a valid expression.
+ This method is allowed to return another node which itself
+ must be reduced.
+
+ The reduced expression.
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Gets a value that indicates whether the expression tree node can be reduced.
+
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+ Gets the expression that represents the constructor call.
+ A that represents the constructor call.
+
+
+ Gets the bindings that describe how to initialize the members of the newly created object.
+ A of objects which describe how to initialize the members.
+
+
+
+ Represents a label, which can be placed in any context. If
+ it is jumped to, it will get the value provided by the corresponding
+ . Otherwise, it gets the value in . If the
+ equals System.Void, no value should be provided.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ The which this label is associated with.
+
+
+
+
+ The value of the when the label is reached through
+ normal control flow (e.g. is not jumped to).
+
+
+
+
+ Emits or clears a sequence point for debug information.
+
+ This allows the debugger to highlight the correct source code when
+ debugging.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Gets the start line of this .
+
+
+
+
+ Gets the start column of this .
+
+
+
+
+ Gets the end line of this .
+
+
+
+
+ Gets the end column of this .
+
+
+
+
+ Gets the that represents the source file.
+
+
+
+
+ Gets the value to indicate if the is for clearing a sequence point.
+
+
+
+
+ Represents the dynamic delete member operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the .
+
+ The name of the member to delete.
+ true if the name should be matched ignoring case; false otherwise.
+
+
+
+ Performs the binding of the dynamic delete member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic delete member operation.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic delete member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic delete member operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic delete member operation.
+
+ The target of the dynamic delete member operation.
+ An array of arguments of the dynamic delete member operation.
+ The representing the result of the binding.
+
+
+
+ Gets the name of the member to delete.
+
+
+
+
+ Gets the value indicating if the string comparison should ignore the case of the member name.
+
+
+
+
+ The result type of the operation.
+
+
+
+
+ Represents the invoke member dynamic operation at the call site,
+ providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the .
+
+ The name of the member to invoke.
+ true if the name should be matched ignoring case; false otherwise.
+ The signature of the arguments at the call site.
+
+
+
+ Performs the binding of the dynamic invoke member operation.
+
+ The target of the dynamic invoke member operation.
+ An array of arguments of the dynamic invoke member operation.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic invoke member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic invoke member operation.
+ The arguments of the dynamic invoke member operation.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic invoke member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic invoke member operation.
+ The arguments of the dynamic invoke member operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic invoke operation if the target dynamic object cannot bind.
+
+ The target of the dynamic invoke operation.
+ The arguments of the dynamic invoke operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+ This method is called by the target when the target implements the invoke member operation
+ as a sequence of get member, and invoke, to let the
+ request the binding of the invoke operation only.
+
+
+
+
+ The result type of the operation.
+
+
+
+
+ Gets the name of the member to invoke.
+
+
+
+
+ Gets the value indicating if the string comparison should ignore the case of the member name.
+
+
+
+
+ Gets the signature of the arguments at the call site.
+
+
+
+
+ Creates an open delegate for the given (dynamic)method.
+
+
+
+
+ Creates a closed delegate for the given (dynamic)method.
+
+
+
+
+ Returns true if the method's parameter types are reference assignable from
+ the argument types, otherwise false.
+
+ An example that can make the method return false is that
+ typeof(double).GetMethod("op_Equality", ..., new[] { typeof(double), typeof(int) })
+ returns a method with two double parameters, which doesn't match the provided
+ argument types.
+
+
+
+
+
+ Encapsulates a method that takes no parameters and does not return a value.
+
+
+
+
+ Encapsulates a method that takes two parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes three parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes four parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes five parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes six parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes seven parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes eight parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes nine parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes ten parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes eleven parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes twelve parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes thirteen parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes fourteen parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the fourteenth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The fourteenth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes fifteen parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the fourteenth parameter of the method that this delegate encapsulates.
+ The type of the fifteenth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The fourteenth parameter of the method that this delegate encapsulates.
+ The fifteenth parameter of the method that this delegate encapsulates.
+
+
+
+ Encapsulates a method that takes sixteen parameters and does not return a value.
+
+ The type of the first parameter of the method that this delegate encapsulates.
+ The type of the second parameter of the method that this delegate encapsulates.
+ The type of the third parameter of the method that this delegate encapsulates.
+ The type of the fourth parameter of the method that this delegate encapsulates.
+ The type of the fifth parameter of the method that this delegate encapsulates.
+ The type of the sixth parameter of the method that this delegate encapsulates.
+ The type of the seventh parameter of the method that this delegate encapsulates.
+ The type of the eighth parameter of the method that this delegate encapsulates.
+ The type of the ninth parameter of the method that this delegate encapsulates.
+ The type of the tenth parameter of the method that this delegate encapsulates.
+ The type of the eleventh parameter of the method that this delegate encapsulates.
+ The type of the twelfth parameter of the method that this delegate encapsulates.
+ The type of the thirteenth parameter of the method that this delegate encapsulates.
+ The type of the fourteenth parameter of the method that this delegate encapsulates.
+ The type of the fifteenth parameter of the method that this delegate encapsulates.
+ The type of the sixteenth parameter of the method that this delegate encapsulates.
+ The first parameter of the method that this delegate encapsulates.
+ The second parameter of the method that this delegate encapsulates.
+ The third parameter of the method that this delegate encapsulates.
+ The fourth parameter of the method that this delegate encapsulates.
+ The fifth parameter of the method that this delegate encapsulates.
+ The sixth parameter of the method that this delegate encapsulates.
+ The seventh parameter of the method that this delegate encapsulates.
+ The eighth parameter of the method that this delegate encapsulates.
+ The ninth parameter of the method that this delegate encapsulates.
+ The tenth parameter of the method that this delegate encapsulates.
+ The eleventh parameter of the method that this delegate encapsulates.
+ The twelfth parameter of the method that this delegate encapsulates.
+ The thirteenth parameter of the method that this delegate encapsulates.
+ The fourteenth parameter of the method that this delegate encapsulates.
+ The fifteenth parameter of the method that this delegate encapsulates.
+ The sixteenth parameter of the method that this delegate encapsulates.
+
+
+
+ Searches for an operator method on the type. The method must have
+ the specified signature, no generic arguments, and have the
+ SpecialName bit set. Also searches inherited operator methods.
+
+ NOTE: This was designed to satisfy the needs of op_True and
+ op_False, because we have to do runtime lookup for those. It may
+ not work right for unary operators in general.
+
+
+
+
+ We can cache references to types, as long as they aren't in
+ collectable assemblies. Unfortunately, we can't really distinguish
+ between different flavors of assemblies. But, we can at least
+ create a whitelist for types in mscorlib (so we get the primitives)
+ and System.Core (so we find Func/Action overloads, etc).
+
+
+
+
+ Represents a constructor call.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Gets the called constructor.
+
+
+
+
+ Gets the arguments to the constructor.
+
+
+
+
+ Gets the members that can retrieve the values of the fields that were initialized with constructor arguments.
+
+
+
+
+ Represents initializing the elements of a collection member of a newly created object.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the element initializers for initializing a collection member of a newly created object.
+
+
+
+
+ Wraps ILGenerator with code that tracks the current IL offset as instructions are emitted into the IL stream.
+
+
+
+
+ Provides a wrapper around an IArgumentProvider which exposes the argument providers
+ members out as an IList of Expression. This is used to avoid allocating an array
+ which needs to be stored inside of a ReadOnlyCollection. Instead this type has
+ the same amount of overhead as an array without duplicating the storage of the
+ elements. This ensures that internally we can avoid creating and copying arrays
+ while users of the Expression trees also don't pay a size penalty for this internal
+ optimization. See IArgumentProvider for more general information on the Expression
+ tree optimizations being used here.
+
+
+
+
+ Class that contains helper methods for DLR CallSites.
+
+
+
+
+ Checks if a is internally used by DLR and should not
+ be displayed on the language code's stack.
+
+ The input
+
+ True if the input is internally used by DLR and should not
+ be displayed on the language code's stack. Otherwise, false.
+
+
+
+
+ Represents an expression that has a unary operator.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Reduces the expression node to a simpler expression.
+ If CanReduce returns true, this should return a valid expression.
+ This method is allowed to return another node which itself
+ must be reduced.
+
+ The reduced expression.
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Gets the operand of the unary operation.
+
+ An that represents the operand of the unary operation.
+
+
+
+ Gets the implementing method for the unary operation.
+
+ The that represents the implementing method.
+
+
+
+ Gets a value that indicates whether the expression tree node represents a lifted call to an operator.
+
+ true if the node represents a lifted call; otherwise, false.
+
+
+
+ Gets a value that indicates whether the expression tree node represents a lifted call to an operator whose return type is lifted to a nullable type.
+
+ true if the operator's return type is lifted to a nullable type; otherwise, false.
+
+
+
+ Gets a value that indicates whether the expression tree node can be reduced.
+
+
+
+
+ Represents an infinite loop. It can be exited with "break".
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the that is the body of the loop.
+
+
+
+
+ Gets the that is used by the loop body as a break statement target.
+
+
+
+
+ Gets the that is used by the loop body as a continue statement target.
+
+
+
+
+ Represents a constructor call that has a collection initializer.
+
+
+ Use the factory methods to create a ListInitExpression.
+ The value of the NodeType property of a ListInitExpression is ListInit.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Reduces the binary expression node to a simpler expression.
+ If CanReduce returns true, this should return a valid expression.
+ This method is allowed to return another node which itself
+ must be reduced.
+
+ The reduced expression.
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Gets a value that indicates whether the expression tree node can be reduced.
+
+
+
+
+ Gets the expression that contains a call to the constructor of a collection type.
+
+
+
+
+ Gets the element initializers that are used to initialize a collection.
+
+
+
+
+ Generator of PDB debugging information for expression trees.
+
+
+
+
+ Used to denote the target of a .
+
+
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Gets the name of the label.
+
+ The label's name is provided for information purposes only.
+
+
+
+ The type of value that is passed when jumping to the label
+ (or System.Void if no value should be passed).
+
+
+
+
+ Represents an expression that has a constant value.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the value of the constant expression.
+
+
+
+
+ Represents an expression that has a conditional operator.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Returns the node type of this Expression. Extension nodes should return
+ ExpressionType.Extension when overriding this method.
+
+ The of the expression.
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
+
+ Gets the test of the conditional operation.
+
+
+
+
+ Gets the expression to execute if the test evaluates to true.
+
+
+
+
+ Gets the expression to execute if the test evaluates to false.
+
+
+
+
+ Specifies what kind of jump this represents.
+
+
+
+
+ A that represents a jump to some location.
+
+
+
+
+ A that represents a return statement.
+
+
+
+
+ A that represents a break statement.
+
+
+
+
+ A that represents a continue statement.
+
+
+
+
+ Represents an unconditional jump. This includes return statements, break and continue statements, and other jumps.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ The value passed to the target, or null if the target is of type
+ System.Void.
+
+
+
+
+ The target label where this node jumps to.
+
+
+
+
+ The kind of the goto. For information purposes only.
+
+
+
+
+ Represents the dynamic get member operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the .
+
+ The name of the member to get.
+ true if the name should be matched ignoring case; false otherwise.
+
+
+
+ Performs the binding of the dynamic get member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic get member operation.
+ The representing the result of the binding.
+
+
+
+ When overridden in the derived class, performs the binding of the dynamic get member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic get member operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic get member operation.
+
+ The target of the dynamic get member operation.
+ An array of arguments of the dynamic get member operation.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ Gets the name of the member to get.
+
+
+
+
+ Gets the value indicating if the string comparison should ignore the case of the member name.
+
+
This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
@@ -10279,60 +10036,116 @@
Arguments to the call site.
The new call site target.
-
+
- Represents calling a constructor and initializing one or more members of the new object.
+ Emits a Ldind* instruction for the appropriate type
-
+
+
+ Emits a Stind* instruction for the appropriate type.
+
+
+
+
+ Emits a Stelem* instruction for the appropriate type.
+
+
+
+
+ Emits an array of constant values provided in the given list.
+ The array is strongly typed.
+
+
+
+
+ Emits an array of values of count size. The items are emitted via the callback
+ which is provided with the current item index to emit.
+
+
+
+
+ Emits an array construction code.
+ The code assumes that bounds for all dimensions
+ are already emitted.
+
+
+
+
+ Emits default(T)
+ Semantics match C# compiler behavior
+
+
+
+
+ If the result of a TypeBinaryExpression is known statically, this
+ returns the result, otherwise it returns null, meaning we'll need
+ to perform the IsInst instruction at runtime.
+
+ The result of this function must be equivalent to IsInst, or
+ null.
+
+
+
+
+ If the result of an isinst opcode is known statically, this
+ returns the result, otherwise it returns null, meaning we'll need
+ to perform the IsInst instruction at runtime.
+
+ The result of this function must be equivalent to IsInst, or
+ null.
+
+
+
+
+ Represents a named parameter expression.
+
+
+
Dispatches to the specific visit method for this node type.
-
+
- Reduces the to a simpler expression.
- If CanReduce returns true, this should return a valid expression.
- This method is allowed to return another node which itself
- must be reduced.
+ Gets the static type of the expression that this represents. (Inherited from .)
- The reduced expression.
+ The that represents the static type of the expression.
-
+
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
+ Returns the node type of this . (Inherited from .)
- The property of the result.
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
+ The that represents this expression.
-
+
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Gets a value that indicates whether the expression tree node can be reduced.
+ The Name of the parameter or variable.
-
+
- Returns the node type of this Expression. Extension nodes should return
- ExpressionType.Extension when overriding this method.
+ Indicates that this ParameterExpression is to be treated as a ByRef parameter.
- The of the expression.
-
- Gets the expression that represents the constructor call.
- A that represents the constructor call.
+
+
+ Specialized subclass to avoid holding onto the byref flag in a
+ parameter expression. This version always holds onto the expression
+ type explicitly and therefore derives from TypedParameterExpression.
+
-
- Gets the bindings that describe how to initialize the members of the newly created object.
- A of objects which describe how to initialize the members.
+
+
+ Specialized subclass which holds onto the type of the expression for
+ uncommon types.
+
+
+
+
+ Generic type to avoid needing explicit storage for primitive data types
+ which are commonly used.
+
@@ -10381,230 +10194,381 @@
Gets the arguments to be used to index the property or array.
-
+
- Represents an expression that has a conditional operator.
+ Represents the initialization of a list.
-
+
- Dispatches to the specific visit method for this node type.
+ Creates a representation of the node.
+ A representation of the node.
-
+
Creates a new expression that is like this one, but using the
supplied children. If all of the children are the same, it will
return this expression.
- The property of the result.
- The property of the result.
- The property of the result.
+ The property of the result.
This expression if no children changed, or an expression with the updated children.
-
+
+
+ Gets the used to add elements to the object.
+
+
+
+
+ Gets the list of elements to be added to the object.
+
+
+
+
+ Represents a set of binding restrictions on the under which the dynamic binding is valid.
+
+
+
+
+ Represents an empty set of binding restrictions. This field is read only.
+
+
+
+
+ Merges the set of binding restrictions with the current binding restrictions.
+
+ The set of restrictions with which to merge the current binding restrictions.
+ The new set of binding restrictions.
+
+
+
+ Creates the binding restriction that check the expression for runtime type identity.
+
+ The expression to test.
+ The exact type to test.
+ The new binding restrictions.
+
+
+
+ The method takes a DynamicMetaObject, and returns an instance restriction for testing null if the object
+ holds a null value, otherwise returns a type restriction.
+
+
+
+
+ Creates the binding restriction that checks the expression for object instance identity.
+
+ The expression to test.
+ The exact object instance to test.
+ The new binding restrictions.
+
+
+
+ Creates the binding restriction that checks the expression for arbitrary immutable properties.
+
+ The expression expression the restrictions.
+ The new binding restrictions.
+
+ By convention, the general restrictions created by this method must only test
+ immutable object properties.
+
+
+
+
+ Combines binding restrictions from the list of instances into one set of restrictions.
+
+ The list of instances from which to combine restrictions.
+ The new set of binding restrictions.
+
+
+
+ Creates the representing the binding restrictions.
+
+ The expression tree representing the restrictions.
+
+
+
+ Builds a balanced tree of AndAlso nodes.
+ We do this so the compiler won't stack overflow if we have many
+ restrictions.
+
+
+
+
+ Represents information about a dynamic get member operation, indicating
+ if the get member should invoke properties when performing the get.
+
+
+
+
+ Gets the value indicating if this GetMember should invoke properties
+ when performing the get. The default value when this interface is not present
+ is true.
+
+
+ This property is used by some languages to get a better COM interop experience.
+ When the value is set to false, the dynamic COM object won't invoke the object
+ but will instead bind to the name, and return an object that can be invoked or
+ indexed later. This is useful for indexed properties and languages that don't
+ produce InvokeMember call sites.
+
+
+
+
+ Describes arguments in the dynamic binding process.
+
+
+ ArgumentCount - all inclusive number of arguments.
+ ArgumentNames - names for those arguments that are named.
+
+ Argument names match to the argument values in left to right order
+ and last name corresponds to the last argument.
+
+ Example:
+ Foo(arg1, arg2, arg3, name1 = arg4, name2 = arg5, name3 = arg6)
+
+ will correspond to:
+ ArgumentCount: 6
+ ArgumentNames: {"name1", "name2", "name3"}
+
+
+
+
+ Creates a new PositionalArgumentInfo.
+
+ The number of arguments.
+ The argument names.
+ The new CallInfo
+
+
+
+ Creates a new CallInfo that represents arguments in the dynamic binding process.
+
+ The number of arguments.
+ The argument names.
+ The new CallInfo
+
+
+
+ Serves as a hash function for the current CallInfo.
+
+ A hash code for the current CallInfo.
+
+
+
+ Determines whether the specified CallInfo instance is considered equal to the current.
+
+ The instance of CallInfo to compare with the current instance.
+ true if the specified instance is equal to the current one otherwise, false.
+
+
+
+ The number of arguments.
+
+
+
+
+ The argument names.
+
+
+
+
+ Represents a call to either static or an instance method.
+
+
+
+
+ Creates a new expression that is like this one, but using the
+ supplied children. If all of the children are the same, it will
+ return this expression.
+
+ The property of the result.
+ The property of the result.
+ This expression if no children changed, or an expression with the updated children.
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Returns a new MethodCallExpression replacing the existing instance/args with the
+ newly provided instance and args. Arguments can be null to use the existing
+ arguments.
+
+ This helper is provided to allow re-writing of nodes to not depend on the specific optimized
+ subclass of MethodCallExpression which is being used.
+
+
+
+
+ Returns the node type of this . (Inherited from .)
+
+ The that represents this expression.
+
+
+
+ Gets the static type of the expression that this represents. (Inherited from .)
+
+ The that represents the static type of the expression.
+
+
+
+ Gets the for the method to be called.
+
+
+
+
+ Gets the that represents the instance
+ for instance method calls or null for static method cals.
+
+
+
+
+ Gets a collection of expressions that represent arguments to the method call.
+
+
+
+
+ Represents the default value of a type or an empty expression.
+
+
+
+
+ Dispatches to the specific visit method for this node type.
+
+
+
+
+ Gets the static type of the expression that this represents.
+
+ The that represents the static type of the expression.
+
+
Returns the node type of this Expression. Extension nodes should return
ExpressionType.Extension when overriding this method.
The of the expression.
-
+
- Gets the static type of the expression that this represents.
-
- The that represents the static type of the expression.
-
-
-
- Gets the test of the conditional operation.
+ Contains compiler state corresponding to a LabelTarget
+ See also LabelScopeInfo.
-
+
- Gets the expression to execute if the test evaluates to true.
+ Indicates if it is legal to emit a "branch" instruction based on
+ currently available information. Call the Reference method before
+ using this property.
-
+
- Gets the expression to execute if the test evaluates to false.
+ Returns true if we can jump into this node
-
+
- Represents an object with members that can be dynamically added and removed at runtime.
+ Represents the dynamic set member operation at the call site, providing the binding semantic and the details about the operation.
-
+
- Creates a new ExpandoObject with no members.
+ Initializes a new instance of the .
+ The name of the member to get.
+ true if the name should be matched ignoring case; false otherwise.
-
+
- Try to get the data stored for the specified class at the specified index. If the
- class has changed a full lookup for the slot will be performed and the correct
- value will be retrieved.
+ Performs the binding of the dynamic set member operation.
-
-
-
- Sets the data for the specified class at the specified index. If the class has
- changed then a full look for the slot will be performed. If the new class does
- not have the provided slot then the Expando's class will change. Only case sensitive
- setter is supported in ExpandoObject.
-
-
-
-
- Deletes the data stored for the specified class at the specified index.
-
-
-
-
- Returns true if the member at the specified index has been deleted,
- otherwise false. Call this function holding the lock.
-
-
-
-
- Promotes the class from the old type to the new type and returns the new
- ExpandoData object.
-
-
-
-
- Internal helper to promote a class. Called from our RuntimeOps helper. This
- version simply doesn't expose the ExpandoData object which is a private
- data structure.
-
-
-
-
- Exposes the ExpandoClass which we've associated with this
- Expando object. Used for type checks in rules.
-
-
-
-
- Adds a dynamic test which checks if the version has changed. The test is only necessary for
- performance as the methods will do the correct thing if called with an incorrect version.
-
-
-
-
- Gets the class and the index associated with the given name. Does not update the expando object. Instead
- this returns both the original and desired new class. A rule is created which includes the test for the
- original class, the promotion to the new class, and the set/delete based on the class post-promotion.
-
-
-
-
- Returns our Expression converted to our known LimitType
-
-
-
-
- Returns a Restrictions object which includes our current restrictions merged
- with a restriction limiting our type
-
-
-
-
- Stores the class and the data associated with the class as one atomic
- pair. This enables us to do a class check in a thread safe manner w/o
- requiring locks.
-
-
-
-
- the dynamically assigned class associated with the Expando object
-
-
-
-
- data stored in the expando object, key names are stored in the class.
-
- Expando._data must be locked when mutating the value. Otherwise a copy of it
- could be made and lose values.
-
-
-
-
- Constructs an empty ExpandoData object with the empty class and no data.
-
-
-
-
- the version of the ExpandoObject that tracks set and delete operations
-
-
-
-
- Constructs a new ExpandoData object with the specified class and data.
-
-
-
-
- Update the associated class and increases the storage for the data array if needed.
-
-
-
-
-
- Indexer for getting/setting the data
-
-
-
-
- Represents the convert dynamic operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new intsance of the .
-
- The type to convert to.
- true if the conversion should consider explicit conversions; otherwise, false.
-
-
-
- Performs the binding of the dynamic convert operation if the target dynamic object cannot bind.
-
- The target of the dynamic convert operation.
+ The target of the dynamic set member operation.
+ An array of arguments of the dynamic set member operation.
The representing the result of the binding.
-
+
- When overridden in the derived class, performs the binding of the dynamic convert operation if the target dynamic object cannot bind.
+ Performs the binding of the dynamic set member operation if the target dynamic object cannot bind.
- The target of the dynamic convert operation.
+ The target of the dynamic set member operation.
+ The value to set to the member.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic set member operation if the target dynamic object cannot bind.
+
+ The target of the dynamic set member operation.
+ The value to set to the member.
The binding result to use if binding fails, or null.
The representing the result of the binding.
-
-
- Performs the binding of the dynamic convert operation.
-
- The target of the dynamic convert operation.
- An array of arguments of the dynamic convert operation.
- The representing the result of the binding.
-
-
-
- The type to convert to.
-
-
-
-
- Gets the value indicating if the conversion should consider explicit conversions.
-
-
-
+
The result type of the operation.
+
+
+ Gets the name of the member to get.
+
+
+
+
+ Gets the value indicating if the string comparison should ignore the case of the member name.
+
+
+
+
+ Represents the invoke dynamic operation at the call site, providing the binding semantic and the details about the operation.
+
+
+
+
+ Initializes a new instance of the .
+
+ The signature of the arguments at the call site.
+
+
+
+ Performs the binding of the dynamic invoke operation if the target dynamic object cannot bind.
+
+ The target of the dynamic invoke operation.
+ The arguments of the dynamic invoke operation.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic invoke operation if the target dynamic object cannot bind.
+
+ The target of the dynamic invoke operation.
+ The arguments of the dynamic invoke operation.
+ The binding result to use if binding fails, or null.
+ The representing the result of the binding.
+
+
+
+ Performs the binding of the dynamic invoke operation.
+
+ The target of the dynamic invoke operation.
+ An array of arguments of the dynamic invoke operation.
+ The representing the result of the binding.
+
+
+
+ The result type of the operation.
+
+
+
+
+ Gets the signature of the arguments at the call site.
+
+
A Dynamic Call Site base class. This type is used as a parameter type to the
@@ -10672,284 +10636,330 @@
The update delegate.
-
+
- Creates an open delegate for the given (dynamic)method.
-
-
-
-
- Creates a closed delegate for the given (dynamic)method.
-
-
-
-
- Returns true if the method's parameter types are reference assignable from
- the argument types, otherwise false.
+ Provides a dictionary-like object used for caches which holds onto a maximum
+ number of elements specified at construction time.
- An example that can make the method return false is that
- typeof(double).GetMethod("op_Equality", ..., new[] { typeof(double), typeof(int) })
- returns a method with two double parameters, which doesn't match the provided
- argument types.
+ This class is not thread safe.
-
-
+
- Determines if variables are closed over in nested lambdas and need to
- be hoisted.
+ Creates a dictionary-like object used for caches.
+ The maximum number of elements to store.
-
+
- Represents creating a new array and possibly initializing the elements of the new array.
+ Tries to get the value associated with 'key', returning true if it's found and
+ false if it's not present.
-
+
+
+ Adds a new element to the cache, replacing and moving it to the front if the
+ element is already present.
+
+
+
+
+ Returns the value associated with the given key, or throws KeyNotFoundException
+ if the key is not present.
+
+
+
+
+ A simple hashset, built on Dictionary{K, V}
+
+
+
+
+ An expression that provides runtime read/write access to variables.
+ Needed to implement "eval" in some dynamic languages.
+ Evaluates to an instance of when executed.
+
+
+
Dispatches to the specific visit method for this node type.
-
+
Creates a new expression that is like this one, but using the
supplied children. If all of the children are the same, it will
return this expression.
- The property of the result.
+ The property of the result.
This expression if no children changed, or an expression with the updated children.
-
-
- Gets the static type of the expression that this represents. (Inherited from .)
-
- The that represents the static type of the expression.
-
-
-
- Gets the bounds of the array if the value of the property is NewArrayBounds, or the values to initialize the elements of the new array if the value of the property is NewArrayInit.
-
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Returns the node type of this . (Inherited from .)
-
- The that represents this expression.
-
-
-
- Stores information needed to emit debugging symbol information for a
- source file, in particular the file name and unique language identifier.
-
-
-
-
- The source file name.
-
-
-
-
- Returns the language's unique identifier, if any.
-
-
-
-
- Returns the language vendor's unique identifier, if any.
-
-
-
-
- Returns the document type's unique identifier, if any.
- Defaults to the guid for a text file.
-
-
-
-
- Provides a wrapper around an IArgumentProvider which exposes the argument providers
- members out as an IList of Expression. This is used to avoid allocating an array
- which needs to be stored inside of a ReadOnlyCollection. Instead this type has
- the same amount of overhead as an array without duplicating the storage of the
- elements. This ensures that internally we can avoid creating and copying arrays
- while users of the Expression trees also don't pay a size penalty for this internal
- optimization. See IArgumentProvider for more general information on the Expression
- tree optimizations being used here.
-
-
-
-
- Represents the dynamic get index operation at the call site, providing the binding semantic and the details about the operation.
-
-
-
-
- Initializes a new instance of the .
-
- The signature of the arguments at the call site.
-
-
-
- Performs the binding of the dynamic get index operation.
-
- The target of the dynamic get index operation.
- An array of arguments of the dynamic get index operation.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic get index operation if the target dynamic object cannot bind.
-
- The target of the dynamic get index operation.
- The arguments of the dynamic get index operation.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic get index operation if the target dynamic object cannot bind.
-
- The target of the dynamic get index operation.
- The arguments of the dynamic get index operation.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
-
-
-
-
- Gets the signature of the arguments at the call site.
-
-
-
-
- Searches for an operator method on the type. The method must have
- the specified signature, no generic arguments, and have the
- SpecialName bit set. Also searches inherited operator methods.
-
- NOTE: This was designed to satisfy the needs of op_True and
- op_False, because we have to do runtime lookup for those. It may
- not work right for unary operators in general.
-
-
-
-
- We can cache references to types, as long as they aren't in
- collectable assemblies. Unfortunately, we can't really distinguish
- between different flavors of assemblies. But, we can at least
- create a whitelist for types in mscorlib (so we get the primitives)
- and System.Core (so we find Func/Action overloads, etc).
-
-
-
-
- Represents a dynamic operation.
-
-
-
-
- Dispatches to the specific visit method for this node type.
-
-
-
-
- Makes a copy of this node replacing the args with the provided values. The
- number of the args needs to match the number of the current block.
-
- This helper is provided to allow re-writing of nodes to not depend on the specific optimized
- subclass of DynamicExpression which is being used.
-
-
-
-
- Creates a new expression that is like this one, but using the
- supplied children. If all of the children are the same, it will
- return this expression.
-
- The property of the result.
- This expression if no children changed, or an expression with the updated children.
-
-
+
Gets the static type of the expression that this represents.
- The that represents the static type of the expression.
+ The that represents the static type of the expression.
-
+
Returns the node type of this Expression. Extension nodes should return
ExpressionType.Extension when overriding this method.
The of the expression.
-
+
- Gets the , which determines the runtime behavior of the
- dynamic site.
+ The variables or parameters to which to provide runtime access.
-
+
- Gets the type of the delegate used by the .
+ This type tracks "runtime" constants--live objects that appear in
+ ConstantExpression nodes and must be bound to the delegate.
-
+
- Gets the arguments to the dynamic operation.
+ The list of constants in the order they appear in the constant array
-
+
- Represents the dynamic set index operation at the call site, providing the binding semantic and the details about the operation.
+ The index of each constant in the constant array
-
+
- Initializes a new instance of the .
-
- The signature of the arguments at the call site.
-
-
-
- Performs the binding of the dynamic set index operation.
-
- The target of the dynamic set index operation.
- An array of arguments of the dynamic set index operation.
- The representing the result of the binding.
-
-
-
- Performs the binding of the dynamic set index operation if the target dynamic object cannot bind.
-
- The target of the dynamic set index operation.
- The arguments of the dynamic set index operation.
- The value to set to the collection.
- The representing the result of the binding.
-
-
-
- When overridden in the derived class, performs the binding of the dynamic set index operation if the target dynamic object cannot bind.
-
- The target of the dynamic set index operation.
- The arguments of the dynamic set index operation.
- The value to set to the collection.
- The binding result to use if binding fails, or null.
- The representing the result of the binding.
-
-
-
- The result type of the operation.
+ Each constant referenced within this lambda, and how often it was referenced
-
+
- Gets the signature of the arguments at the call site.
+ IL locals for storing frequently used constants
+
+
+
+
+ Called by VariableBinder. Adds the constant to the list (if needed)
+ and increases the reference count by one
+
+
+
+
+ Emits a live object as a constant
+
+
+
+
+ Emit code to cache frequently used constants into IL locals,
+ instead of pulling them out of the array each time
+
+
+
+
+ Constants can emit themselves as different types
+ For caching purposes, we need to treat each distinct Type as a
+ seperate thing to cache. (If we have to cast it on the way out, it
+ ends up using a JIT temp and defeats the purpose of caching the
+ value in a local)
+
+
+
+
+ Provides a simple class that can be inherited from to create an object with dynamic behavior
+ at runtime. Subclasses can override the various binder methods (GetMember, SetMember, Call, etc...)
+ to provide custom behavior that will be invoked at runtime.
+
+ If a method is not overridden then the DynamicObject does not directly support that behavior and
+ the call site will determine how the binding should be performed.
+
+
+
+
+ Enables derived types to create a new instance of DynamicObject. DynamicObject instances cannot be
+ directly instantiated because they have no implementation of dynamic behavior.
+
+
+
+
+ Provides the implementation of getting a member. Derived classes can override
+ this method to customize behavior. When not overridden the call site requesting the
+ binder determines the behavior.
+
+ The binder provided by the call site.
+ The result of the get operation.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of setting a member. Derived classes can override
+ this method to customize behavior. When not overridden the call site requesting the
+ binder determines the behavior.
+
+ The binder provided by the call site.
+ The value to set.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of deleting a member. Derived classes can override
+ this method to customize behavior. When not overridden the call site requesting the
+ binder determines the behavior.
+
+ The binder provided by the call site.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of calling a member. Derived classes can override
+ this method to customize behavior. When not overridden the call site requesting the
+ binder determines the behavior.
+
+ The binder provided by the call site.
+ The arguments to be used for the invocation.
+ The result of the invocation.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of converting the DynamicObject to another type. Derived classes
+ can override this method to customize behavior. When not overridden the call site
+ requesting the binder determines the behavior.
+
+ The binder provided by the call site.
+ The result of the conversion.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of creating an instance of the DynamicObject. Derived classes
+ can override this method to customize behavior. When not overridden the call site requesting
+ the binder determines the behavior.
+
+ The binder provided by the call site.
+ The arguments used for creation.
+ The created instance.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of invoking the DynamicObject. Derived classes can
+ override this method to customize behavior. When not overridden the call site requesting
+ the binder determines the behavior.
+
+ The binder provided by the call site.
+ The arguments to be used for the invocation.
+ The result of the invocation.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of performing a binary operation. Derived classes can
+ override this method to customize behavior. When not overridden the call site requesting
+ the binder determines the behavior.
+
+ The binder provided by the call site.
+ The right operand for the operation.
+ The result of the operation.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of performing a unary operation. Derived classes can
+ override this method to customize behavior. When not overridden the call site requesting
+ the binder determines the behavior.
+
+ The binder provided by the call site.
+ The result of the operation.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of performing a get index operation. Derived classes can
+ override this method to customize behavior. When not overridden the call site requesting
+ the binder determines the behavior.
+
+ The binder provided by the call site.
+ The indexes to be used.
+ The result of the operation.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of performing a set index operation. Derived classes can
+ override this method to custmize behavior. When not overridden the call site requesting
+ the binder determines the behavior.
+
+ The binder provided by the call site.
+ The indexes to be used.
+ The value to set.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Provides the implementation of performing a delete index operation. Derived classes
+ can override this method to custmize behavior. When not overridden the call site
+ requesting the binder determines the behavior.
+
+ The binder provided by the call site.
+ The indexes to be deleted.
+ true if the operation is complete, false if the call site should determine behavior.
+
+
+
+ Returns the enumeration of all dynamic member names.
+
+ The list of dynamic member names.
+
+
+
+ The provided MetaObject will dispatch to the Dynamic virtual methods.
+ The object can be encapsulated inside of another MetaObject to
+ provide custom behavior for individual actions.
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic that returns a result
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic that returns a result
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+
+
+
+
+ Checks if the derived type has overridden the specified method. If there is no
+ implementation for the method provided then Dynamic falls back to the base class
+ behavior which lets the call site determine how the binder is performed.
+
+
+
+
+ Returns a Restrictions object which includes our current restrictions merged
+ with a restriction limiting our type
+
+
+
+
+ Returns our Expression converted to DynamicObject
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.dll b/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.dll
index d44d591..8fa2a86 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.dll and b/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.dll differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.pdb b/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.pdb
index 005cc5c..c5886e2 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.pdb and b/aspclassiccompiler/bin/Release/Microsoft.Scripting.ExtensionAttribute.pdb differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.dll b/aspclassiccompiler/bin/Release/Microsoft.Scripting.dll
index 6809f90..d23a935 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Scripting.dll and b/aspclassiccompiler/bin/Release/Microsoft.Scripting.dll differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.pdb b/aspclassiccompiler/bin/Release/Microsoft.Scripting.pdb
index 73adbd6..6b91cda 100644
Binary files a/aspclassiccompiler/bin/Release/Microsoft.Scripting.pdb and b/aspclassiccompiler/bin/Release/Microsoft.Scripting.pdb differ
diff --git a/aspclassiccompiler/bin/Release/Microsoft.Scripting.xml b/aspclassiccompiler/bin/Release/Microsoft.Scripting.xml
index 3441b8c..1fcf5af 100644
--- a/aspclassiccompiler/bin/Release/Microsoft.Scripting.xml
+++ b/aspclassiccompiler/bin/Release/Microsoft.Scripting.xml
@@ -4,2313 +4,6 @@
Microsoft.Scripting
-
-
- Provides an interned representation of a string which supports both case sensitive and case insensitive
- lookups.
-
- By default all lookups are case sensitive. Case insensitive lookups can be performed by first creating
- a normal SymbolId for a given string and then accessing the CaseInsensitiveIdentifier property. Using
- the case insensitive identifier during a lookup will cause the lookup to be case insensitive.
-
-
-
-
- Override of ToString.
- DO NOT USE THIS METHOD TO RETRIEVE STRING THAT THE SYMBOL REPRESENTS
- Use SymbolTable.IdToString(SymbolId) instead.
-
-
-
- SymbolId for null string
-
-
- SymbolId to represent invalid value
-
-
-
- Exposes a IDictionary<SymbolId, object> as a IDictionary<object, object<
-
-
-
-
- Not all .NET enumerators throw exceptions if accessed in an invalid state. This type
- can be used to throw exceptions from enumerators implemented in IronPython.
-
-
-
-
- Reads specified range of lines (or less) from the source unit.
- Line numbers starts with 1.
-
-
-
-
- Errors are reported to the specified sink.
- Returns null if the parser cannot compile the code due to error(s).
-
-
-
-
- Executes against a specified scope.
-
-
-
-
- Executes against a specified scope and reports errors to the given error sink.
-
-
-
-
- Executes in a new scope created by the language.
-
-
-
-
- Executes in a new scope created by the language.
-
-
-
-
- Executes in a new scope created by the language.
-
-
-
-
- Identification of the source unit. Assigned by the host.
- The format and semantics is host dependent (could be a path on file system or URL).
- Empty string for anonymous source units.
-
-
-
-
- LanguageContext of the language of the unit.
-
-
-
-
- This attribute is used to mark a parameter that can accept any keyword parameters that
- are not bound to normal arguments. The extra keyword parameters will be
- passed in a dictionary which is created for the call.
-
- Most languages which support params dictionaries will support the following types:
- IDictionary<string, anything>
- IDictionary<object, anything>
- Dictionary<string, anything>
- Dictionary<object, anything>
- IDictionary
- IAttributesCollection (deprecated)
-
- For languages which don't have language level support the user will be required to
- create and populate the dictionary by hand.
-
- This attribute is the dictionary equivalent of the System.ParamArrayAttribute.
-
-
- public static void KeywordArgFunction([ParamsDictionary]IDictionary<string, object> dict) {
- foreach (var v in dict) {
- Console.WriteLine("Key: {0} Value: {1}", v.Key, v.Value);
- }
- }
-
- Called from Python:
-
- KeywordArgFunction(a = 2, b = "abc")
-
- will print:
- Key: a Value = 2
- Key: b Value = abc
-
-
-
-
- Provides language specific facilities which are typically called by the runtime.
-
-
-
-
- Provides a text reader for source code that is to be read from a given stream.
-
- The stream open for reading. The stream must also allow seeking.
- An encoding that should be used if the stream doesn't have Unicode or language specific preamble.
- the path of the source unit if available
- The reader.
- An I/O error occurs.
-
-
-
- Creates the language specific CompilerOptions object for compilation of code not bound to any particular scope.
- The language should flow any relevant options from LanguageContext to the newly created options instance.
-
-
-
-
- Creates the language specific CompilerOptions object for compilation of code bound to a given scope.
-
-
-
-
- Parses the source code within a specified compiler context.
- The source unit to parse is held on by the context.
-
- null on failure.
- Could also set the code properties and line/file mappings on the source unit.
-
-
-
- Creates a conversion binder.
-
- If explicitCast is true then the binder should do explicit conversions.
- If explicitCast is false then the binder should do implicit conversions.
-
- If explicitCast is null it is up to the language to select the conversions
- which closest match their normal behavior.
-
-
-
-
- Gets the member names associated with the object
- By default, only returns IDO names
-
-
-
-
- Returns a string representation of the object in a language specific object display format.
-
- Dynamic sites container that could be used for any dynamic dispatches necessary for formatting.
- Object to format.
- A string representation of object.
-
-
-
- Provides the ContextId which includes members that should only be shown for this LanguageContext.
-
- ContextId's are used for filtering by Scope's.
-
-
-
-
- Gets the ScriptDomainManager that this LanguageContext is running within.
-
-
-
-
- Whether the language can parse code and create source units.
-
-
-
-
- Singleton LanguageContext which represents a language-neutral LanguageContext
-
-
-
-
- Reads an option whose value is expected to be a collection of non-null strings.
- Reaturns a read-only copy of the option's value.
-
-
-
-
- Dynamically choose between interpreting, simple compilation and compilation
- that takes advantage of runtime history.
-
-
-
-
- Display exception detail (callstack) when exception gets caught
-
-
-
-
- Whether to gather performance statistics.
-
-
-
-
- Initial file search paths provided by the host.
-
-
-
-
- Provides a StreamContentProvider for a stream of content backed by a file on disk.
-
-
-
-
- Provides a factory to create streams over one source of binary content.
-
- StreamContentProvider's are used when opening a file of an unknown encoding. The
- StreamContentProvider will be wrapped in a TextContentProvider provided by the language
- which can support a language specific way of interpreting the binary data into text.
-
- For example some languages allow a marker at the beginning of the file which specifies
- the encoding of the rest of the file.
-
-
-
-
- Creates a new Stream which is backed by the content the StreamContentProvider was created for.
-
- For example if the StreamContentProvider was backing a file then GetStream re-opens the file and returns
- the new stream.
-
- This method may be called multiple times. For example once to compile the code and again to get
- the source code to display error messages.
-
-
-
-
- Only host should redirect I/O.
-
-
-
-
- Provides hosting to DLR. Forwards DLR requests to the ScriptHost.
-
-
-
-
- DLR requires any Hosting API provider to implement this class and provide its instance upon Runtime initialization.
- DLR calls on it to perform basic host/system dependent operations.
-
-
-
-
- Abstracts system operations that are used by DLR and could potentially be platform specific.
-
-
-
-
- ObjectOperations provide a large catalogue of object operations such as member access, conversions,
- indexing, and things like addition. There are several introspection and tool support services available
- for more advanced hosts.
-
- You get ObjectOperation instances from ScriptEngine, and they are bound to their engines for the semantics
- of the operations. There is a default instance of ObjectOperations you can share across all uses of the
- engine. However, very advanced hosts can create new instances.
-
-
-
- the number of sites required before we'll try cleaning up the cache...
-
-
- the minimum difference between the average that is required to remove
-
-
- the maximum number we'll remove on a single cache cleanup
-
-
- the number of sites we should clear after if we can't make progress cleaning up otherwise
-
-
- a dictionary of SiteKey's which are used to cache frequently used operations, logically a set
-
-
- the # of sites we had created at the last cleanup
-
-
- the total number of sites we've ever created
-
-
-
- Calls the provided object with the given parameters and returns the result.
-
- The prefered way of calling objects is to convert the object to a strongly typed delegate
- using the ConvertTo methods and then invoking that delegate.
-
-
-
-
- Invokes a member on the provided object with the given parameters and returns the result.
-
-
-
-
- Invokes a member on the provided object with the given parameters and returns the result.
-
-
-
-
- Creates a new instance from the provided object using the given parameters, and returns the result.
-
-
-
-
- Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
-
-
-
-
- Gets the member name from the object obj and converts it to the type T. Throws an exception if the
- member does not exist, is write-only, or cannot be converted.
-
-
-
-
- Gets the member name from the object obj. Returns true if the member is successfully retrieved and
- stores the value in the value out param.
-
-
-
-
- Returns true if the object has a member named name, false if the member does not exist.
-
-
-
-
- Removes the member name from the object obj.
-
-
-
-
- Sets the member name on object obj to value.
-
-
-
-
- Sets the member name on object obj to value. This overload can be used to avoid
- boxing and casting of strongly typed members.
-
-
-
-
- Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
-
-
-
-
- Gets the member name from the object obj and converts it to the type T. Throws an exception if the
- member does not exist, is write-only, or cannot be converted.
-
-
-
-
- Gets the member name from the object obj. Returns true if the member is successfully retrieved and
- stores the value in the value out param.
-
-
-
-
- Returns true if the object has a member named name, false if the member does not exist.
-
-
-
-
- Removes the member name from the object obj. Returns true if the member was successfully removed
- or false if the member does not exist.
-
-
-
-
- Sets the member name on object obj to value.
-
-
-
-
- Sets the member name on object obj to value. This overload can be used to avoid
- boxing and casting of strongly typed members.
-
-
-
-
- Converts the object obj to the type T. The conversion will be explicit or implicit
- depending on what the langauge prefers.
-
-
-
-
- Converts the object obj to the type type. The conversion will be explicit or implicit
- depending on what the langauge prefers.
-
-
-
-
- Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
-
- The conversion will be explicit or implicit depending on what the langauge prefers.
-
-
-
-
- Converts the object obj to the type type. Returns true if the value can be converted, false if it cannot.
-
- The conversion will be explicit or implicit depending on what the langauge prefers.
-
-
-
-
- Convers the object obj to the type T including explicit conversions which may lose information.
-
-
-
-
- Converts the object obj to the type type including explicit conversions which may lose information.
-
-
-
-
- Converts the object obj to the type type including explicit conversions which may lose information.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Convers the object obj to the type T including implicit conversions.
-
-
-
-
- Converts the object obj to the type type including implicit conversions.
-
-
-
-
- Converts the object obj to the type type including implicit conversions.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Performs a generic unary operation on the strongly typed target and returns the value as the specified type
-
-
-
-
- Peforms the generic binary operation on the specified strongly typed targets and returns
- the strongly typed result.
-
-
-
-
- Returns a list of strings which contain the known members of the object.
-
-
-
-
- Returns a string representation of the object in a language specific object display format.
-
-
-
-
- Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
-
-
- This will either get the site from the cache or create a new site and return it. The cache
- may be cleaned if it's gotten too big since the last usage.
-
-
-
-
- Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
-
-
- This will either get the site from the cache or create a new site and return it. The cache
- may be cleaned if it's gotten too big since the last usage.
-
-
-
-
- Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
-
-
- This will either get the site from the cache or create a new site and return it. The cache
- may be cleaned if it's gotten too big since the last usage.
-
-
-
-
- Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
-
-
- This will either get the site from the cache or create a new site and return it. The cache
- may be cleaned if it's gotten too big since the last usage.
-
-
-
-
- Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
-
-
- This will either get the site from the cache or create a new site and return it. The cache
- may be cleaned if it's gotten too big since the last usage.
-
-
-
-
- Helper to create to get or create the dynamic site - called by the GetSite methods.
-
-
-
-
- Removes items from the cache that have the lowest usage...
-
-
-
-
- Helper class for tracking all of our unique dynamic sites and their
- usage patterns. We hash on the combination of the binder and site type.
-
- We also track the hit count and the key holds the site associated w/ the
- key. Logically this is a set based upon the binder and site-type but we
- store it in a dictionary.
-
-
-
-
- Base class for SymbolId dictionaries.
-
- SymbolId dictionaries are fast dictionaries used for looking up members of classes,
- function environments, function locals, and other places which are typically indexed by
- string names.
-
- SymbolId dictionaries support both keying by SymbolId (the common case) and object keys
- (supporting late bound access to the dictionary as a normal Dictionary<object, object>
- when exposed directly to user code). When indexed by objects null is a valid value for the
- key.
-
-
-
-
- Creates a new SymbolIdDictBase from the specified creating context which will be
- used for comparisons.
-
-
-
-
- Stores information needed to setup a language
-
-
-
-
- Creates a new LanguageSetup
-
- assembly qualified type name of the language
- provider
-
-
-
- Creates a new LanguageSetup with the provided options
- TODO: remove this overload?
-
-
-
-
- Creates a new LanguageSetup with the provided options
-
-
-
-
- Gets an option as a strongly typed value.
-
-
-
-
- The assembly qualified type name of the language provider
-
-
-
-
- Display name of the language. If empty, it will be set to the first
- name in the Names list.
-
-
-
-
- Case-insensitive language names.
-
-
-
-
- Case-insensitive file extension, optionally starts with a dot.
-
-
-
-
- Option names are case-sensitive.
-
-
-
-
- Unmapped span.
-
-
-
-
- This interface represents a dictionary that can be accessed using symbols and also arbitrary objects.
- This should conceptually inherit from IDictionary<object, object>, but we do not do that as we want the default indexer
- property to be indexed by SymbolId, not by object.
-
-
-
-
- Access using SymbolId keys
-
-
-
-
- Bridges ErrorListener and ErrorSink. It provides the reverse functionality as ErrorSinkProxyListener
-
-
-
-
- The host can use this class to track for errors reported during script parsing and compilation.
- Hosting API counterpart for .
-
-
-
-
- Hosting counterpart for .
-
-
-
-
- Compile the ScriptSource into CompileCode object that can be executed
- repeatedly in its default scope or in other scopes without having to recompile the code.
-
- Code cannot be compiled.
-
-
-
- Errors are reported to the specified listener.
- Returns null if the parser cannot compile the code due to errors.
-
-
-
-
- Errors are reported to the specified listener.
- Returns null if the parser cannot compile the code due to error(s).
-
-
-
-
- Errors are reported to the specified listener.
- Returns null if the parser cannot compile the code due to error(s).
-
-
-
-
- Executes the code in the specified scope.
- Returns an object that is the resulting value of running the code.
-
- When the ScriptSource is a file or statement, the engine decides what is
- an appropriate value to return. Some languages return the value produced
- by the last expression or statement, but languages that are not expression
- based may return null.
-
- Code cannot be compiled.
-
-
-
- Executes the source code. The execution is not bound to any particular scope.
-
-
-
-
- Executes the code in a specified scope and converts the result to the specified type.
- The conversion is language specific.
-
-
-
-
- Executes the code in an empty scope and converts the result to the specified type.
- The conversion is language specific.
-
-
-
-
- Executes the code in the specified scope and return a result.
- Returns an ObjectHandle wrapping the resulting value of running the code.
-
-
-
-
- Executes the code in an empty scope.
- Returns an ObjectHandle wrapping the resulting value of running the code.
-
-
-
-
- Runs a specified code as if it was a program launched from OS command shell.
- and returns a process exit code indicating the success or error condition
- of executing the code.
-
- Exact behavior depends on the language. Some languages have a dedicated "exit" exception that
- carries the exit code, in which case the exception is cought and the exit code is returned.
- The default behavior returns the result of program's execution converted to an integer
- using a language specific conversion.
-
- Code cannot be compiled.
-
-
-
- Detects the encoding of the content.
-
-
- An encoding that is used by the reader of the script source to transcode its content to Unicode text.
- Null if the content is already textual and no transcoding is performed.
-
-
- Note that the default encoding specified when the script source is created could be overridden by
- an encoding that is found in the content preamble (Unicode BOM or a language specific encoding preamble).
- In that case the preamble encoding is returned. Otherwise, the default encoding is returned.
-
- An I/O error occurs.
-
-
-
- Reads specified range of lines (or less) from the source unit.
-
- 1-based number of the first line to fetch.
- The number of lines to fetch.
-
- Which character sequences are considered line separators is language specific.
- If language doesn't specify otherwise "\r", "\n", "\r\n" are recognized line separators.
-
- An I/O error occurs.
-
-
-
- Reads a specified line.
-
- 1-based line number.
- Line content. Line separator is not included.
- An I/O error occurs.
-
- Which character sequences are considered line separators is language specific.
- If language doesn't specify otherwise "\r", "\n", "\r\n" are recognized line separators.
-
-
-
-
- Gets script source content.
-
- Entire content.
- An I/O error occurs.
-
- The result includes language specific preambles (e.g. "#coding:UTF-8" encoding preamble recognized by Ruby),
- but not the preamble defined by the content encoding (e.g. BOM).
- The entire content of the source unit is encoded by single encoding (if it is read from binary stream).
-
-
-
-
- Identification of the source unit. Assigned by the host.
- The format and semantics is host dependent (could be a path on file system or URL).
- null for anonymous script source.
- Cannot be an empty string.
-
-
-
-
- Gets a Func of CallSite, object * paramCnt, object delegate type
- that's suitable for use in a non-strongly typed call site.
-
-
-
-
- Converts a generic ICollection of T into an array of T.
-
- If the collection is already an array of T the original collection is returned.
-
-
-
-
- Provides a factory to create TextReader's over one source of textual content.
-
- TextContentProvider's are used when reading from a source which is already decoded
- or has a known specific decoding.
-
- For example a text editor might provide a TextContentProvider whose backing is
- an in-memory text buffer that the user can actively edit.
-
-
-
-
- Creates a new TextReader which is backed by the content the TextContentProvider was created for.
-
- This method may be called multiple times. For example once to compile the code and again to get
- the source code to display error messages.
-
-
-
-
- Class that represents compiler options.
- Note that this class is likely to change when hosting API becomes part of .Net
-
-
-
-
- Represents a location in source code.
-
-
-
-
- Creates a new source location.
-
- The index in the source stream the location represents (0-based).
- The line in the source stream the location represents (1-based).
- The column in the source stream the location represents (1-based).
-
-
-
- Compares two specified location values to see if they are equal.
-
- One location to compare.
- The other location to compare.
- True if the locations are the same, False otherwise.
-
-
-
- Compares two specified location values to see if they are not equal.
-
- One location to compare.
- The other location to compare.
- True if the locations are not the same, False otherwise.
-
-
-
- Compares two specified location values to see if one is before the other.
-
- One location to compare.
- The other location to compare.
- True if the first location is before the other location, False otherwise.
-
-
-
- Compares two specified location values to see if one is after the other.
-
- One location to compare.
- The other location to compare.
- True if the first location is after the other location, False otherwise.
-
-
-
- Compares two specified location values to see if one is before or the same as the other.
-
- One location to compare.
- The other location to compare.
- True if the first location is before or the same as the other location, False otherwise.
-
-
-
- Compares two specified location values to see if one is after or the same as the other.
-
- One location to compare.
- The other location to compare.
- True if the first location is after or the same as the other location, False otherwise.
-
-
-
- Compares two specified location values.
-
- One location to compare.
- The other location to compare.
- 0 if the locations are equal, -1 if the left one is less than the right one, 1 otherwise.
-
-
-
- A location that is valid but represents no location at all.
-
-
-
-
- An invalid location.
-
-
-
-
- A minimal valid location.
-
-
-
-
- The index in the source stream the location represents (0-based).
-
-
-
-
- The line in the source stream the location represents (1-based).
-
-
-
-
- The column in the source stream the location represents (1-based).
-
-
-
-
- Whether the location is a valid location.
-
- True if the location is valid, False otherwise.
-
-
-
- Move the tokenizer past the next token and return its category.
-
- The token information associated with the token just scanned.
-
-
-
- Move the tokenizer past the next token.
-
- False if the end of stream has been reached, true otherwise.
-
-
-
- Get all tokens over a block of the stream.
-
-
-
- The scanner should return full tokens. If startLocation + length lands in the middle of a token, the full token
- should be returned.
-
- s
- The mininum number of characters to process while getting tokens.
- A enumeration of tokens.
-
-
-
- Scan from startLocation to at least startLocation + length.
-
- The mininum number of characters to process while getting tokens.
-
- This method is used to determine state at arbitrary startLocation.
-
- False if the end of stream has been reached, true otherwise.
-
-
-
- The current internal state of the scanner.
-
-
-
-
- The current startLocation of the scanner.
-
-
-
-
- Represents a language in Hosting API.
- Hosting API counterpart for .
-
-
-
-
- Returns a new ObjectOperations object. See the Operations property for why you might want to call this.
-
-
-
-
- Returns a new ObjectOperations object that inherits any semantics particular to the provided ScriptScope.
-
- See the Operations property for why you might want to call this.
-
-
-
-
- Executes an expression. The execution is not bound to any particular scope.
-
- The engine doesn't support code execution.
- is a null reference.
-
-
-
- Executes an expression within the specified scope.
-
- The engine doesn't support code execution.
- is a null reference.
- is a null reference.
-
-
-
- Executes an expression within a new scope and converts result to the given type.
-
- The engine doesn't support code execution.
- is a null reference.
-
-
-
- Executes an expression within the specified scope and converts result to the given type.
-
- The engine doesn't support code execution.
- is a null reference.
- is a null reference.
-
-
-
- Executes content of the specified file in a new scope and returns that scope.
-
- The engine doesn't support code execution.
- is a null reference.
-
-
-
- Executes content of the specified file against the given scope.
-
- The .
- The engine doesn't support code execution.
- is a null reference.
- is a null reference.
-
-
-
- Executes the expression in the specified scope and return a result.
- Returns an ObjectHandle wrapping the resulting value of running the code.
-
-
-
-
- Executes the code in an empty scope.
- Returns an ObjectHandle wrapping the resulting value of running the code.
-
-
-
-
- Creates a new ScriptScope whose storage is an arbitrary object.
-
- Accesses to the ScriptScope will turn into get, set, and delete members against the object.
-
-
-
-
- This method returns the ScriptScope in which a ScriptSource of given path was executed.
-
- The ScriptSource.Path property is the key to finding the ScriptScope. Hosts need
- to make sure they create a ScriptSource and set its Path property appropriately.
-
- GetScope is primarily useful for tools that need to map files to their execution scopes. For example,
- an editor and interpreter tool might run a file Foo that imports or requires a file Bar.
-
- The editor's user might later open the file Bar and want to execute expressions in its context.
- The tool would need to find Bar's ScriptScope for setting the appropriate context in its interpreter window.
- This method helps with this scenario.
-
-
-
-
- Return a ScriptSource object from string contents with the current engine as the language binding.
-
- The default SourceCodeKind is AutoDetect.
-
- The ScriptSource's Path property defaults to null.
-
-
-
-
- Return a ScriptSource object from string contents with the current engine as the language binding.
-
- The ScriptSource's Path property defaults to null.
-
-
-
-
- Return a ScriptSource object from string contents with the current engine as the language binding.
-
- The default SourceCodeKind is AutoDetect.
-
-
-
-
- Return a ScriptSource object from string contents. These are helpers for creating ScriptSources' with the right language binding.
-
-
-
-
- Return a ScriptSource object from file contents with the current engine as the language binding.
-
- The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions
- or map to this language engine with ScriptRuntime.GetEngineByFileExtension.
-
- The default SourceCodeKind is File.
-
- The ScriptSource's Path property will be the path argument.
-
- The encoding defaults to System.Text.Encoding.Default.
-
-
-
-
- Return a ScriptSource object from file contents with the current engine as the language binding.
-
- The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions
- or map to this language engine with ScriptRuntime.GetEngineByFileExtension.
-
- The default SourceCodeKind is File.
-
- The ScriptSource's Path property will be the path argument.
-
-
-
-
- Return a ScriptSource object from file contents with the current engine as the language binding.
-
- The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions
- or map to this language engine with ScriptRuntime.GetEngineByFileExtension.
-
- The ScriptSource's Path property will be the path argument.
-
-
-
-
- This method returns a ScriptSource object from a System.CodeDom.CodeObject.
- This is a factory method for creating a ScriptSources with this language binding.
-
- The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
-
- Languages may do more, but hosts should only expect CodeMemberMethod support,
- and only sub nodes consisting of the following:
- CodeSnippetStatement
- CodeSnippetExpression
- CodePrimitiveExpression
- CodeMethodInvokeExpression
- CodeExpressionStatement (for holding MethodInvoke)
-
-
-
-
- This method returns a ScriptSource object from a System.CodeDom.CodeObject.
- This is a factory method for creating a ScriptSources with this language binding.
-
- The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
-
- Languages may do more, but hosts should only expect CodeMemberMethod support,
- and only sub nodes consisting of the following:
- CodeSnippetStatement
- CodeSnippetExpression
- CodePrimitiveExpression
- CodeMethodInvokeExpression
- CodeExpressionStatement (for holding MethodInvoke)
-
-
-
-
- This method returns a ScriptSource object from a System.CodeDom.CodeObject.
- This is a factory method for creating a ScriptSources with this language binding.
-
- The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
-
- Languages may do more, but hosts should only expect CodeMemberMethod support,
- and only sub nodes consisting of the following:
- CodeSnippetStatement
- CodeSnippetExpression
- CodePrimitiveExpression
- CodeMethodInvokeExpression
- CodeExpressionStatement (for holding MethodInvoke)
-
-
-
-
- This method returns a ScriptSource object from a System.CodeDom.CodeObject.
- This is a factory method for creating a ScriptSources with this language binding.
-
- The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
-
- Languages may do more, but hosts should only expect CodeMemberMethod support,
- and only sub nodes consisting of the following:
- CodeSnippetStatement
- CodeSnippetExpression
- CodePrimitiveExpression
- CodeMethodInvokeExpression
- CodeExpressionStatement (for holding MethodInvoke)
-
-
-
-
- These methods return ScriptSource objects from stream contents with the current engine as the language binding.
-
- The default SourceCodeKind is File.
-
- The encoding defaults to Encoding.Default.
-
-
-
-
- These methods return ScriptSource objects from stream contents with the current engine as the language binding.
-
- The default SourceCodeKind is File.
-
-
-
-
- These methods return ScriptSource objects from stream contents with the current engine as the language binding.
-
- The encoding defaults to Encoding.Default.
-
-
-
-
- This method returns a ScriptSource with the content provider supplied with the current engine as the language binding.
-
- This helper lets you own the content provider so that you can implement a stream over internal host data structures, such as an editor's text representation.
-
-
-
-
- Fetches the value of a variable stored in the scope.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope), then the name lookup is
- a literal lookup of the name in the scope's dictionary. Therefore, it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- This method removes the variable name and returns whether
- the variable was bound in the scope when you called this method.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example. If there is a default engine, then the name lookup uses that language's semantics.
-
- Some languages may refuse to remove some variables. If the scope has a default language that has bound
- variables that cannot be removed, the language engine throws an exception.
-
-
-
-
- Assigns a value to a variable in the scope, overwriting any previous value.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- Fetches the value of a variable stored in the scope and returns
- a Boolean indicating success of the lookup.
-
- When the method's result is false, then it assigns null to value.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- Fetches the value of a variable stored in the scope.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope), then the name lookup is
- a literal lookup of the name in the scope's dictionary. Therefore, it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
- Throws an exception if the engine cannot perform the requested type conversion.
-
-
-
-
- Fetches the value of a variable stored in the scope and returns
- a Boolean indicating success of the lookup.
-
- When the method's result is false, then it assigns default(T) to value.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
- Throws an exception if the engine cannot perform the requested type conversion,
- then it return false and assigns value to default(T).
-
-
-
-
- This method returns whether the variable is bound in this scope.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- Fetches the value of a variable stored in the scope and returns an the wrapped object as an ObjectHandle.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope), then the name lookup is
- a literal lookup of the name in the scope's dictionary. Therefore, it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- Assigns a value to a variable in the scope, overwriting any previous value.
-
- The ObjectHandle value is unwrapped before performing the assignment.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- Fetches the value of a variable stored in the scope and returns
- a Boolean indicating success of the lookup.
-
- When the method's result is false, then it assigns null to the value. Otherwise
- an ObjectHandle wrapping the object is assigned to value.
-
- If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
- then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
- it is case-sensitive for example.
-
- If there is a default engine, then the name lookup uses that language's semantics.
-
-
-
-
- This method returns a language-specific service.
-
- It provides a point of extensibility for a language implementation
- to offer more functionality than the standard engine members discussed here.
-
-
-
-
- Sets the search paths used by the engine for loading files when a script wants
- to import or require another file of code.
-
- The language doesn't allow to set search paths.
-
-
-
- Gets the search paths used by the engine for loading files when a script wants
- to import or require another file of code.
-
-
-
-
- Returns a default ObjectOperations for the engine.
-
- Because an ObjectOperations object caches rules for the types of
- objects and operations it processes, using the default ObjectOperations for
- many objects could degrade the caching benefits. Eventually the cache for
- some operations could degrade to a point where ObjectOperations stops caching and
- does a full search for an implementation of the requested operation for the given objects.
-
- Another reason to create a new ObjectOperations instance is to have it bound
- to the specific view of a ScriptScope. Languages may attach per-language
- behavior to a ScriptScope which would alter how the operations are performed.
-
- For simple hosting situations, this is sufficient behavior.
-
-
-
-
-
-
- This property returns readon-only LanguageOptions this engine is using.
-
-
- The values are determined during runtime initialization and read-only afterwards.
- You can change the settings via a configuration file or explicitly using ScriptRuntimeSetup class.
-
-
-
-
- This property returns the ScriptRuntime for the context in which this engine executes.
-
-
-
-
- This property returns the engine's version as a string. The format is language-dependent.
-
-
-
-
- ObjectOperations provide a large catalogue of object operations such as member access, conversions,
- indexing, and things like addition. There are several introspection and tool support services available
- for more advanced hosts.
-
- You get ObjectOperation instances from ScriptEngine, and they are bound to their engines for the semantics
- of the operations. There is a default instance of ObjectOperations you can share across all uses of the
- engine. However, very advanced hosts can create new instances.
-
-
-
-
- Returns true if the object can be called, false if it cannot.
-
- Even if an object is callable Call may still fail if an incorrect number of arguments or type of arguments are provided.
-
-
-
-
- Invokes the provided object with the given parameters and returns the result.
-
- The prefered way of calling objects is to convert the object to a strongly typed delegate
- using the ConvertTo methods and then invoking that delegate.
-
-
-
-
- Invokes a member on the provided object with the given parameters and returns the result.
-
-
-
-
- Creates a new instance from the provided object using the given parameters, and returns the result.
-
-
-
-
- Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
-
-
-
-
- Gets the member name from the object obj and converts it to the type T. Throws an exception if the
- member does not exist, is write-only, or cannot be converted.
-
-
-
-
- Gets the member name from the object obj. Returns true if the member is successfully retrieved and
- stores the value in the value out param.
-
-
-
-
- Returns true if the object has a member named name, false if the member does not exist.
-
-
-
-
- Removes the member name from the object obj.
-
-
-
-
- Sets the member name on object obj to value.
-
-
-
-
- Sets the member name on object obj to value. This overload can be used to avoid
- boxing and casting of strongly typed members.
-
-
-
-
- Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
-
-
-
-
- Gets the member name from the object obj and converts it to the type T. Throws an exception if the
- member does not exist, is write-only, or cannot be converted.
-
-
-
-
- Gets the member name from the object obj. Returns true if the member is successfully retrieved and
- stores the value in the value out param.
-
-
-
-
- Returns true if the object has a member named name, false if the member does not exist.
-
-
-
-
- Removes the member name from the object obj.
-
-
-
-
- Sets the member name on object obj to value.
-
-
-
-
- Sets the member name on object obj to value. This overload can be used to avoid
- boxing and casting of strongly typed members.
-
-
-
-
- Converts the object obj to the type T. The conversion will be explicit or implicit depending on
- what the langauge prefers.
-
-
-
-
- Converts the object obj to the type type. The conversion will be explicit or implicit depending on
- what the langauge prefers.
-
-
-
-
- Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
-
- The conversion will be explicit or implicit depending on what the langauge prefers.
-
-
-
-
- Converts the object obj to the type type. Returns true if the value can be converted, false if it cannot.
-
- The conversion will be explicit or implicit depending on what the langauge prefers.
-
-
-
-
- Converts the object obj to the type T including explicit conversions which may lose information.
-
-
-
-
- Converts the object obj to the type type including explicit conversions which may lose information.
-
-
-
-
- Converts the object obj to the type T including explicit conversions which may lose information.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type type including explicit conversions which may lose information.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type T including implicit conversions.
-
-
-
-
- Converts the object obj to the type type including implicit conversions.
-
-
-
-
- Converts the object obj to the type T including implicit conversions.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type type including implicit conversions.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Performs a generic unary operation on the specified target and returns the result.
-
-
-
-
- Performs a generic unary operation on the strongly typed target and returns the value as the specified type
-
-
-
-
- Performs the generic binary operation on the specified targets and returns the result.
-
-
-
-
- Peforms the generic binary operation on the specified strongly typed targets and returns
- the strongly typed result.
-
-
-
-
- Performs addition on the specified targets and returns the result. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Performs subtraction on the specified targets and returns the result. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Raises the first object to the power of the second object. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Multiplies the two objects. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Divides the first object by the second object. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Performs modulus of the 1st object by the second object. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Shifts the left object left by the right object. Throws an exception if the
- operation cannot be performed.
-
-
-
-
- Shifts the left object right by the right object. Throws an exception if the
- operation cannot be performed.
-
-
-
-
- Performs a bitwise-and of the two operands. Throws an exception if the operation
- cannot be performed.
-
-
-
-
- Performs a bitwise-or of the two operands. Throws an exception if the operation
- cannot be performed.
-
-
-
-
- Performs a exclusive-or of the two operands. Throws an exception if the operation
- cannot be performed.
-
-
-
-
- Compares the two objects and returns true if the left object is less than the right object.
- Throws an exception if hte comparison cannot be performed.
-
-
-
-
- Compares the two objects and returns true if the left object is greater than the right object.
- Throws an exception if hte comparison cannot be performed.
-
-
-
-
- Compares the two objects and returns true if the left object is less than or equal to the right object.
- Throws an exception if hte comparison cannot be performed.
-
-
-
-
- Compares the two objects and returns true if the left object is greater than or equal to the right object.
- Throws an exception if hte comparison cannot be performed.
-
-
-
-
- Compares the two objects and returns true if the left object is equal to the right object.
- Throws an exception if the comparison cannot be performed.
-
-
-
-
- Compares the two objects and returns true if the left object is not equal to the right object.
- Throws an exception if hte comparison cannot be performed.
-
-
-
-
- Returns a string which describes the object as it appears in source code
-
-
-
-
- Returns a string representation of the object in a language specific object display format.
-
-
-
-
- Returns a list of strings which contain the known members of the object.
-
-
-
-
- Returns a string providing documentation for the specified object.
-
-
-
-
- Returns a list of signatures applicable for calling the specified object in a form displayable to the user.
-
-
-
-
- Calls the provided object with the given parameters and returns the result.
-
- The prefered way of calling objects is to convert the object to a strongly typed delegate
- using the ConvertTo methods and then invoking that delegate.
-
-
-
-
- Performs a generic unary operation on the specified target and returns the result.
-
-
-
-
- Performs a generic unary operation on the strongly typed target and returns the value as the specified type
-
-
-
-
- Performs modulus of the 1st object by the second object. Throws an exception
- if the operation cannot be performed.
-
-
-
-
- Performs the generic binary operation on the specified targets and returns the result.
-
-
-
-
- Peforms the generic binary operation on the specified strongly typed targets and returns
- the strongly typed result.
-
-
-
-
- Calls the specified remote object with the specified remote parameters.
-
- Though delegates are preferable for calls they may not always be usable for remote objects.
-
-
-
-
- Calls the specified remote object with the local parameters which will be serialized
- to the remote app domain.
-
-
-
-
- Performs the specified unary operator on the remote object.
-
-
-
-
- Performs the specified binary operator on the remote object.
-
-
-
-
- Performs modulus on the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Returns true if the remote object is callable.
-
-
-
-
- Invokes the specified remote object with the specified remote parameters.
-
- Though delegates are preferable for calls they may not always be usable for remote objects.
-
-
-
-
- Invokes the specified remote object with the local parameters which will be serialized
- to the remote app domain.
-
-
-
-
- Sets the remote object as a member on the provided remote object.
-
-
-
-
- Sets the member name on the remote object obj to value. This overload can be used to avoid
- boxing and casting of strongly typed members.
-
-
-
-
- Gets the member name on the remote object. Throws an exception if the member is not defined or
- is write-only.
-
-
-
-
- Gets the member name on the remote object. Throws an exception if the member is not defined or
- is write-only.
-
-
-
-
- Gets the member name on the remote object. Returns false if the member is not defined or
- is write-only.
-
-
-
-
- Tests to see if the member name is defined on the remote object.
-
-
-
-
- Removes the member from the remote object
-
-
-
-
- Converts the remote object into the specified type returning a handle to
- the new remote object. The conversion will be explicit or implicit depending on
- what the langauge prefers.
-
-
-
-
- Converts the remote object into the specified type returning a handle to
- the new remote object. The conversion will be explicit or implicit depending on
- what the langauge prefers.
-
-
-
-
- Converts the remote object into the specified type returning a handle to
- the new remote object. Returns true if the value can be converted,
- false if it cannot. The conversion will be explicit or implicit depending on
- what the langauge prefers.
-
-
-
-
- Converts the remote object into the specified type returning a handle to
- the new remote object. Returns true if the value can be converted,
- false if it cannot. The conversion will be explicit or implicit depending on
- what the langauge prefers.
-
-
-
-
- Converts the object obj to the type T including explicit conversions which may lose information.
-
-
-
-
- Converts the object obj to the type type including explicit conversions which may lose information.
-
-
-
-
- Converts the object obj to the type T including explicit conversions which may lose information.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type type including explicit conversions which may lose information.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type T including implicit conversions.
-
-
-
-
- Converts the object obj to the type type including implicit conversions.
-
-
-
-
- Converts the object obj to the type T including implicit conversions.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Converts the object obj to the type type including implicit conversions.
-
- Returns true if the value can be converted, false if it cannot.
-
-
-
-
- Unwraps the remote object and converts it into the specified type before
- returning it.
-
-
-
-
- Performs the specified unary operator on the remote object.
-
-
-
-
- Performs the specified binary operator on the remote object.
-
-
-
-
- Adds the two remote objects. Throws an exception if the operation cannot be performed.
-
-
-
-
- Subtracts the 1st remote object from the second. Throws an exception if the operation cannot be performed.
-
-
-
-
- Raises the 1st remote object to the power of the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Multiplies the two remote objects. Throws an exception if the operation cannot be performed.
-
-
-
-
- Divides the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Performs modulus on the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Shifts the 1st remote object left by the 2nd remote object. Throws an exception if the operation cannot be performed.
-
-
-
-
- Shifts the 1st remote object right by the 2nd remote object. Throws an exception if the operation cannot be performed.
-
-
-
-
- Performs bitwise-and on the two remote objects. Throws an exception if the operation cannot be performed.
-
-
-
-
- Performs bitwise-or on the two remote objects. Throws an exception if the operation cannot be performed.
-
-
-
-
- Performs exclusive-or on the two remote objects. Throws an exception if the operation cannot be performed.
-
-
-
-
- Compares the two remote objects and returns true if the 1st is less than the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Compares the two remote objects and returns true if the 1st is greater than the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Compares the two remote objects and returns true if the 1st is less than or equal to the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Compares the two remote objects and returns true if the 1st is greater than or equal to than the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Compares the two remote objects and returns true if the 1st is equal to the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Compares the two remote objects and returns true if the 1st is not equal to the 2nd. Throws an exception if the operation cannot be performed.
-
-
-
-
- Returns a string representation of the object in a langauge specific object display format.
-
-
-
-
- Returns a list of strings which contain the known members of the remote object.
-
-
-
-
- Returns a string providing documentation for the specified remote object.
-
-
-
-
- Returns a list of signatures applicable for calling the specified object in a form displayable to the user.
-
-
-
-
- Helper to unwrap an object - in the future maybe we should validate the current app domain.
-
-
-
-
- Helper to unwrap multiple objects
-
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Offset or count are out of range.
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Offset or count are out of range.
-
-
-
- Requires the array and all its items to be non-null.
-
-
-
-
- Requires the enumerable collection and all its items to be non-null.
-
-
-
-
- Requires the range [offset, offset + count] to be a subset of [0, array.Count].
-
- Array is null.
- Offset or count are out of range.
-
-
-
- Source code is a syntactically correct.
-
-
-
-
- Source code represents an empty statement/expression.
-
-
-
-
- Source code is already invalid and no suffix can make it syntactically correct.
-
-
-
-
- Last token is incomplete. Source code can still be completed correctly.
-
-
-
-
- Last statement is incomplete. Source code can still be completed correctly.
-
-
-
-
- Move the tokenizer past the next token and return its category.
-
- The token information associated with the token just scanned.
-
-
-
- Move the tokenizer past the next token.
-
- False if the end of stream has been reached, true otherwise.
-
-
-
- Get all tokens over a block of the stream.
-
-
-
- The scanner should return full tokens. If startLocation + length lands in the middle of a token, the full token
- should be returned.
-
-
- The mininum number of characters to process while getting tokens.
- A enumeration of tokens.
-
-
-
- Scan from startLocation to at least startLocation + length.
-
- The mininum number of characters to process while getting tokens.
-
- This method is used to determine state at arbitrary startLocation.
-
- False if the end of stream has been reached, true otherwise.
-
-
-
- The current internal state of the scanner.
-
-
-
-
- The current startLocation of the scanner.
-
-
-
-
- Simple thread-safe SymbolDictionary used for storing collections of members.
-
- Like all SymbolDictionaries this supports both indexing using SymbolId's (IAttributesCollection)
- and via object keys (IDictionary<object, object>).
-
-
-
-
- Symbol dictionaries are usually indexed using literal strings, which is handled using the Symbols.
- However, some languages allow non-string keys too. We handle this case by lazily creating an object-keyed dictionary,
- and keeping it in the symbol-indexed dictionary. Such access is slower, which is acceptable.
-
-
-
-
- A collection of environment variables.
-
-
-
-
- Event for when a host calls LoadAssembly. After hooking this
- event languages will need to call GetLoadedAssemblyList to
- get any assemblies which were loaded before the language was
- loaded.
-
-
-
-
- Stores information needed to setup a ScriptRuntime
-
-
-
-
- Reads setup from .NET configuration system (.config files).
- If there is no configuration available returns an empty setup.
-
-
-
-
- Reads setup from a specified XML stream.
-
-
-
-
- Reads setup from a specified XML file.
-
-
-
-
- The list of language setup information for languages to load into
- the runtime
-
-
-
-
- Indicates that the script runtime is in debug mode.
- This means:
-
- 1) Symbols are emitted for debuggable methods (methods associated with SourceUnit).
- 2) Debuggable methods are emitted to non-collectable types (this is due to CLR limitations on dynamic method debugging).
- 3) JIT optimization is disabled for all methods
- 4) Languages may disable optimizations based on this value.
-
-
-
-
- Ignore CLR visibility checks
-
-
-
-
- Can be any derived class of ScriptHost. When set, it allows the
- host to override certain methods to control behavior of the runtime
-
-
-
-
- Option names are case-sensitive.
-
-
-
-
- Arguments passed to the host type when it is constructed
-
-
-
-
- Bridges ErrorSink and ErrorListener.
- Errors reported by language compilers to ErrorSink are forwarded to the ErrorListener provided by the host.
-
-
- This proxy is created in the scenario when the compiler is processing a single SourceUnit.
- Therefore it could maintain one to one mapping from SourceUnit to ScriptSource.
- In a case, which shouldn't happen, that the compiler reports an error in a different SourceUnit we just create
- a new instance of the ScriptSource each time.
-
- TODO: Consider compilation of multiple source units and creating a hashtable mapping SourceUnits to ScriptSources
- within the context of compilation unit.
-
-
-
-
- This overload will be called when a SourceUnit is not available. This can happen if the code is being executed remotely,
- since SourceUnit cannot be marshaled across AppDomains.
-
-
Strongly-typed and parameterized string factory.
@@ -2980,446 +673,6 @@
already a ReadOnlyCollection{T}, in which case we just return it.
-
-
- Singleton for each language.
-
-
-
-
- Must not be called under a lock as it can potentially call a user code.
-
- The language context's implementation failed to instantiate.
-
-
-
- Whether the application is in debug mode.
- This means:
-
- 1) Symbols are emitted for debuggable methods (methods associated with SourceUnit).
- 2) Debuggable methods are emitted to non-collectable types (this is due to CLR limitations on dynamic method debugging).
- 3) JIT optimization is disabled for all methods
- 4) Languages may disable optimizations based on this value.
-
-
-
-
- Ignore CLR visibility checks.
-
-
-
-
- Advanced APIs for HAPI providers. These methods should not be used by hosts.
- They are provided for other hosting API implementers that would like to leverage existing HAPI and
- extend it with language specific functionality, for example.
-
-
-
-
- Performs a callback in the ScriptEngine's app domain and returns the result.
-
-
-
-
- Represents a host-provided variables for executable code. The variables are
- typically backed by a host-provided dictionary. Languages can also associate per-language
- information with the context by using scope extensions. This can be used for tracking
- state which is used across multiple executions, for providing custom forms of
- storage (for example object keyed access), or other language specific semantics.
-
- Scope objects are thread-safe as long as their underlying storage is thread safe.
-
- Script hosts can choose to use thread safe or thread unsafe modules but must be sure
- to constrain the code they right to be single-threaded if using thread unsafe
- storage.
-
-
-
-
- Creates a new scope with a new empty thread-safe dictionary.
-
-
-
-
- Creates a new scope with the provided dictionary.
-
-
-
-
- Creates a new scope which is backed by an arbitrary object for it's storage.
-
-
-
-
-
- Gets the ScopeExtension associated with the provided ContextId.
-
-
-
-
- Sets the ScopeExtension to the provided value for the given ContextId.
-
- The extension can only be set once. The returned value is either the new ScopeExtension
- if no value was previously set or the previous value.
-
-
-
-
- Presents a flat enumerable view of multiple dictionaries
-
-
-
-
- Console input stream (Console.OpenStandardInput) has a bug that manifests itself if reading small amounts of data.
- This class wraps the standard input stream with a buffer that ensures that enough data are read from the underlying stream.
-
-
-
-
- A token marking an end of stream.
-
-
-
-
- A space, tab, or newline.
-
-
-
-
- A block comment.
-
-
-
-
- A single line comment.
-
-
-
-
- A documentation comment.
-
-
-
-
- A numeric literal.
-
-
-
-
- A character literal.
-
-
-
-
- A string literal.
-
-
-
-
- A regular expression literal.
-
-
-
-
- A keyword.
-
-
-
-
- A directive (e.g. #line).
-
-
-
-
- A punctuation character that has a specific meaning in a language.
-
-
-
-
- A token that operates as a separator between two language elements.
-
-
-
-
- An identifier (variable, $variable, @variable, @@variable, $variable$, function!, function?, [variable], i'variable', ...)
-
-
-
-
- Braces, parenthesis, brackets.
-
-
-
-
- Errors.
-
-
-
-
- ScriptHost is collocated with ScriptRuntime in the same app-domain.
- The host can implement a derived class to consume some notifications and/or
- customize operations like TryGetSourceUnit,ResolveSourceUnit, etc.
-
- The areguments to the the constructor of the derived class are specified in ScriptRuntimeSetup
- instance that enters ScriptRuntime initialization.
-
- If the host is remote with respect to DLR (i.e. also with respect to ScriptHost)
- and needs to access objects living in its app-domain it can pass MarshalByRefObject
- as an argument to its ScriptHost subclass constructor.
-
-
-
-
- The runtime the host is attached to.
-
-
-
-
- Invoked after the initialization of the associated Runtime is finished.
- The host can override this method to perform additional initialization of runtime (like loading assemblies etc.).
-
-
-
-
- Invoked after a new language is loaded into the Runtime.
- The host can override this method to perform additional initialization of language engines.
-
-
-
-
- Abstracts system operations that are used by DLR and could potentially be platform specific.
- The host can implement its PAL to adapt DLR to the platform it is running on.
- For example, the Silverlight host adapts some file operations to work against files on the server.
-
-
-
- Invalid path.
-
-
- Invalid path.
-
-
-
- Hosting API counterpart for .
-
-
-
-
- Executes code in a default scope.
-
-
-
-
- Execute code within a given scope and returns the result.
-
-
-
-
- Executes code in in a default scope and converts to a given type.
-
-
-
-
- Execute code within a given scope and converts result to a given type.
-
-
-
-
- Engine that compiled this code.
-
-
-
-
- Default scope for this code.
-
-
-
-
- Stores the location of a span of text in a source file.
-
-
-
-
- Constructs a new span with a specific start and end location.
-
- The beginning of the span.
- The end of the span.
-
-
-
- A valid span that represents no location.
-
-
-
-
- An invalid span.
-
-
-
-
- Compares two specified Span values to see if they are equal.
-
- One span to compare.
- The other span to compare.
- True if the spans are the same, False otherwise.
-
-
-
- Compares two specified Span values to see if they are not equal.
-
- One span to compare.
- The other span to compare.
- True if the spans are not the same, False otherwise.
-
-
-
- The start location of the span.
-
-
-
-
- The end location of the span. Location of the first character behind the span.
-
-
-
-
- Length of the span (number of characters inside the span).
-
-
-
-
- Whether the locations in the span are valid.
-
-
-
-
- See also Microsoft.VisualStudio.Package.TokenTriggers.
-
-
-
-
- Represents a language context. Typically there is at most 1 context
- associated with each language, but some languages may use more than one context
- to identify code that should be treated differently. Contexts are used during
- member and operator lookup.
-
-
-
-
- Registers a language within the system with the specified name.
-
-
-
-
- Looks up the context ID for the specified context identifier
-
-
-
-
- Represents a Dynamic Language Runtime in Hosting API.
- Hosting API counterpart for .
-
-
-
-
- Creates ScriptRuntime in the current app-domain and initialized according to the the specified settings.
- Creates an instance of host class specified in the setup and associates it with the created runtime.
- Both Runtime and ScriptHost are collocated in the current app-domain.
-
-
-
-
- Creates a new runtime with languages set up according to the current application configuration
- (using System.Configuration).
-
-
-
-
- Creates ScriptRuntime in the current app-domain and initialized according to the the specified settings.
- Creates an instance of host class specified in the setup and associates it with the created runtime.
- Both Runtime and ScriptHost are collocated in the specified app-domain.
-
-
-
-
-
-
-
-
- Gets engine for the specified language.
-
-
-
-
- Looks up the engine for the specified language. It the engine hasn't been created in this Runtime, it is instantiated here.
- The method doesn't lock nor send notifications to the host.
-
-
-
-
- path is empty, contains one or more of the invalid characters defined in GetInvalidPathChars or doesn't have an extension.
-
-
-
- path is null
- file extension does not map to language engine
- language does not have any search paths
- file does exist in language's search path
-
-
-
- This method walks the assembly's namespaces and name bindings to ScriptRuntime.Globals
- to represent the types available in the assembly. Each top-level namespace name gets
- bound in Globals to a dynamic object representing the namespace. Within each top-level
- namespace object, nested namespace names are bound to dynamic objects representing each
- tier of nested namespaces. When this method encounters the same namespace-qualified name,
- it merges names together objects representing the namespaces.
-
-
-
-
-
- This property returns the "global object" or name bindings of the ScriptRuntime as a ScriptScope.
-
- You can set the globals scope, which you might do if you created a ScriptScope with an
- IAttributesCollection so that your host could late bind names.
-
-
-
-
- Defines a kind of the source code. The parser sets its initial state accordingly.
-
-
-
-
- The code is an expression.
-
-
-
-
- The code is a sequence of statements.
-
-
-
-
- The code is a single statement.
-
-
-
-
- The code is a content of a file.
-
-
-
-
- The code is an interactive command.
-
-
-
-
- The language parser auto-detects the kind. A syntax error is reported if it is not able to do so.
-
-
Provides optimized and cachable support for scope storage.
@@ -3593,19 +846,156 @@
True if the scope has a value, false if it does not.
-
-
- ScriptCode is an instance of compiled code that is bound to a specific LanguageContext
- but not a specific ScriptScope. The code can be re-executed multiple times in different
- scopes. Hosting API counterpart for this class is CompiledCode.
-
-
Internal class which binds a LanguageContext, StreamContentProvider, and Encoding together to produce
a TextContentProvider which reads binary data with the correct language semantics.
+
+
+ Provides a factory to create TextReader's over one source of textual content.
+
+ TextContentProvider's are used when reading from a source which is already decoded
+ or has a known specific decoding.
+
+ For example a text editor might provide a TextContentProvider whose backing is
+ an in-memory text buffer that the user can actively edit.
+
+
+
+
+ Creates a new TextReader which is backed by the content the TextContentProvider was created for.
+
+ This method may be called multiple times. For example once to compile the code and again to get
+ the source code to display error messages.
+
+
+
+
+ Singleton LanguageContext which represents a language-neutral LanguageContext
+
+
+
+
+ Provides language specific facilities which are typically called by the runtime.
+
+
+
+
+ Provides access to setting variables in scopes.
+
+ By default this goes through ObjectOperations which can be rather slow.
+ Languages can override this to provide fast customized access which avoids
+ ObjectOperations. Languages can provide fast access to commonly used scope
+ types for that language. Typically this includes ScopeStorage and any other
+ classes which the language themselves uses for backing of a Scope.
+
+
+
+
+ Provides access to try getting variables in scopes.
+
+ By default this goes through ObjectOperations which can be rather slow.
+ Languages can override this to provide fast customized access which avoids
+ ObjectOperations. Languages can provide fast access to commonly used scope
+ types for that language. Typically this includes ScopeStorage and any other
+ classes which the language themselves uses for backing of a Scope.
+
+
+
+
+ Provides access to getting variables in scopes and converting the result.
+
+ By default this goes through ObjectOperations which can be rather slow.
+ Languages can override this to provide fast customized access which avoids
+ ObjectOperations. Languages can provide fast access to commonly used scope
+ types for that language. Typically this includes ScopeStorage and any other
+ classes which the language themselves uses for backing of a Scope.
+
+
+
+
+ Provides access to getting variables in scopes.
+
+ By default this goes through ObjectOperations which can be rather slow.
+ Languages can override this to provide fast customized access which avoids
+ ObjectOperations. Languages can provide fast access to commonly used scope
+ types for that language. Typically this includes ScopeStorage and any other
+ classes which the language themselves uses for backing of a Scope.
+
+
+
+
+ Provides a text reader for source code that is to be read from a given stream.
+
+ The stream open for reading. The stream must also allow seeking.
+ An encoding that should be used if the stream doesn't have Unicode or language specific preamble.
+ the path of the source unit if available
+ The reader.
+ An I/O error occurs.
+
+
+
+ Creates the language specific CompilerOptions object for compilation of code not bound to any particular scope.
+ The language should flow any relevant options from LanguageContext to the newly created options instance.
+
+
+
+
+ Creates the language specific CompilerOptions object for compilation of code bound to a given scope.
+
+
+
+
+ Parses the source code within a specified compiler context.
+ The source unit to parse is held on by the context.
+
+ null on failure.
+ Could also set the code properties and line/file mappings on the source unit.
+
+
+
+ Creates a conversion binder.
+
+ If explicitCast is true then the binder should do explicit conversions.
+ If explicitCast is false then the binder should do implicit conversions.
+
+ If explicitCast is null it is up to the language to select the conversions
+ which closest match their normal behavior.
+
+
+
+
+ Gets the member names associated with the object
+ By default, only returns IDO names
+
+
+
+
+ Returns a string representation of the object in a language specific object display format.
+
+ Dynamic sites container that could be used for any dynamic dispatches necessary for formatting.
+ Object to format.
+ A string representation of object.
+
+
+
+ Provides the ContextId which includes members that should only be shown for this LanguageContext.
+
+ ContextId's are used for filtering by Scope's.
+
+
+
+
+ Gets the ScriptDomainManager that this LanguageContext is running within.
+
+
+
+
+ Whether the language can parse code and create source units.
+
+
Provides host-redirectable IO streams used by DLR languages for default IO.
@@ -3623,6 +1013,1274 @@
Used if the host handles both kinds of data (textual and binary) by itself.
+
+
+ Advanced APIs for HAPI providers. These methods should not be used by hosts.
+ They are provided for other hosting API implementers that would like to leverage existing HAPI and
+ extend it with language specific functionality, for example.
+
+
+
+ is a null reference.
+ is remote.
+
+
+ e is a null reference.
+ is remote.
+
+
+ is a null reference.
+ is remote.
+
+
+ is a null reference.
+ is remote.
+
+
+ is a null reference.
+ is remote.
+
+
+ is a null reference.
+ is remote.
+
+
+ is a null reference.
+ is a null reference.
+ is a transparent proxy.
+
+
+
+ Performs a callback in the ScriptEngine's app domain and returns the result.
+
+
+
+
+ Creates a new DocumentationOperations object from the given DocumentationProvider.
+
+
+
+
+ Provides documentation for a single parameter.
+
+
+
+
+ The name of the parameter
+
+
+
+
+ The type name of the parameter or null if no type information is available.
+
+
+
+
+ Provides addition information about the parameter such as if it's a parameter array.
+
+
+
+
+ Gets the documentation string for this parameter or null if no documentation is available.
+
+
+
+
+ Presents a flat enumerable view of multiple dictionaries
+
+
+
+
+ Not all .NET enumerators throw exceptions if accessed in an invalid state. This type
+ can be used to throw exceptions from enumerators implemented in IronPython.
+
+
+
+
+ Source code reader.
+
+
+
+
+ Seeks the first character of a specified line in the text stream.
+
+ Line number. The current position is assumed to be line #1.
+
+ Returns true if the line is found, false otherwise.
+
+
+
+
+ Encoding that is used by the reader to convert binary data read from an underlying binary stream.
+ Null if the reader is reading from a textual source (not performing any byte to character transcoding).
+
+
+
+
+ Specifies the type of member.
+
+
+
+
+ Stores the location of a span of text in a source file.
+
+
+
+
+ Constructs a new span with a specific start and end location.
+
+ The beginning of the span.
+ The end of the span.
+
+
+
+ A valid span that represents no location.
+
+
+
+
+ An invalid span.
+
+
+
+
+ Compares two specified Span values to see if they are equal.
+
+ One span to compare.
+ The other span to compare.
+ True if the spans are the same, False otherwise.
+
+
+
+ Compares two specified Span values to see if they are not equal.
+
+ One span to compare.
+ The other span to compare.
+ True if the spans are not the same, False otherwise.
+
+
+
+ The start location of the span.
+
+
+
+
+ The end location of the span. Location of the first character behind the span.
+
+
+
+
+ Length of the span (number of characters inside the span).
+
+
+
+
+ Whether the locations in the span are valid.
+
+
+
+
+ Defines a kind of the source code. The parser sets its initial state accordingly.
+
+
+
+
+ The code is an expression.
+
+
+
+
+ The code is a sequence of statements.
+
+
+
+
+ The code is a single statement.
+
+
+
+
+ The code is a content of a file.
+
+
+
+
+ The code is an interactive command.
+
+
+
+
+ The language parser auto-detects the kind. A syntax error is reported if it is not able to do so.
+
+
+
+
+ Bridges ErrorListener and ErrorSink. It provides the reverse functionality as ErrorSinkProxyListener
+
+
+
+
+ The host can use this class to track for errors reported during script parsing and compilation.
+ Hosting API counterpart for .
+
+
+
+
+ Helper for storing information about stack frames.
+
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Offset or count are out of range.
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Offset or count are out of range.
+
+
+
+ Requires the array and all its items to be non-null.
+
+
+
+
+ Requires the enumerable collection and all its items to be non-null.
+
+
+
+
+ Requires the range [offset, offset + count] to be a subset of [0, array.Count].
+
+ Array is null.
+ Offset or count are out of range.
+
+
+
+ Only host should redirect I/O.
+
+
+
+
+ Stores information needed to setup a language
+
+
+
+
+ Creates a new LanguageSetup
+
+ assembly qualified type name of the language
+ provider
+
+
+
+ Creates a new LanguageSetup with the provided options
+ TODO: remove this overload?
+
+
+
+
+ Creates a new LanguageSetup with the provided options
+
+
+
+
+ Gets an option as a strongly typed value.
+
+
+
+
+ The assembly qualified type name of the language provider
+
+
+
+
+ Display name of the language. If empty, it will be set to the first
+ name in the Names list.
+
+
+
+
+ Case-insensitive language names.
+
+
+
+
+ Case-insensitive file extension, optionally starts with a dot.
+
+
+
+
+ Option names are case-sensitive.
+
+
+
+
+ Provides documentation about a member in a live object.
+
+
+
+
+ The name of the member
+
+
+
+
+ The kind of the member if it's known.
+
+
+
+
+ ScriptHost is collocated with ScriptRuntime in the same app-domain.
+ The host can implement a derived class to consume some notifications and/or
+ customize operations like TryGetSourceUnit,ResolveSourceUnit, etc.
+
+ The areguments to the the constructor of the derived class are specified in ScriptRuntimeSetup
+ instance that enters ScriptRuntime initialization.
+
+ If the host is remote with respect to DLR (i.e. also with respect to ScriptHost)
+ and needs to access objects living in its app-domain it can pass MarshalByRefObject
+ as an argument to its ScriptHost subclass constructor.
+
+
+
+
+ The runtime the host is attached to.
+
+
+
+
+ Invoked after the initialization of the associated Runtime is finished.
+ The host can override this method to perform additional initialization of runtime (like loading assemblies etc.).
+
+
+
+
+ Invoked after a new language is loaded into the Runtime.
+ The host can override this method to perform additional initialization of language engines.
+
+
+
+
+ Abstracts system operations that are used by DLR and could potentially be platform specific.
+ The host can implement its PAL to adapt DLR to the platform it is running on.
+ For example, the Silverlight host adapts some file operations to work against files on the server.
+
+
+
+ Invalid path.
+
+
+ Invalid path.
+
+
+
+ This interface represents a dictionary that can be accessed using symbols and also arbitrary objects.
+ This should conceptually inherit from IDictionary<object, object>, but we do not do that as we want the default indexer
+ property to be indexed by SymbolId, not by object.
+
+
+
+
+ Access using SymbolId keys
+
+
+
+
+ Move the tokenizer past the next token and return its category.
+
+ The token information associated with the token just scanned.
+
+
+
+ Move the tokenizer past the next token.
+
+ False if the end of stream has been reached, true otherwise.
+
+
+
+ Get all tokens over a block of the stream.
+
+
+
+ The scanner should return full tokens. If startLocation + length lands in the middle of a token, the full token
+ should be returned.
+
+ s
+ Tokens are read until at least given amount of characters is read or the stream ends.
+ A enumeration of tokens.
+
+
+
+ Scan from startLocation to at least startLocation + length.
+
+ Tokens are read until at least given amount of characters is read or the stream ends.
+
+ This method is used to determine state at arbitrary startLocation.
+
+ False if the end of stream has been reached, true otherwise.
+
+
+
+ The current internal state of the scanner.
+
+
+
+
+ The current startLocation of the scanner.
+
+
+
+
+ ObjectOperations provide a large catalogue of object operations such as member access, conversions,
+ indexing, and things like addition. There are several introspection and tool support services available
+ for more advanced hosts.
+
+ You get ObjectOperation instances from ScriptEngine, and they are bound to their engines for the semantics
+ of the operations. There is a default instance of ObjectOperations you can share across all uses of the
+ engine. However, very advanced hosts can create new instances.
+
+
+
+
+ Returns true if the object can be called, false if it cannot.
+
+ Even if an object is callable Call may still fail if an incorrect number of arguments or type of arguments are provided.
+
+
+
+
+ Invokes the provided object with the given parameters and returns the result.
+
+ The prefered way of calling objects is to convert the object to a strongly typed delegate
+ using the ConvertTo methods and then invoking that delegate.
+
+
+
+
+ Invokes a member on the provided object with the given parameters and returns the result.
+
+
+
+
+ Creates a new instance from the provided object using the given parameters, and returns the result.
+
+
+
+
+ Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
+
+
+
+
+ Gets the member name from the object obj and converts it to the type T. Throws an exception if the
+ member does not exist, is write-only, or cannot be converted.
+
+
+
+
+ Gets the member name from the object obj. Returns true if the member is successfully retrieved and
+ stores the value in the value out param.
+
+
+
+
+ Returns true if the object has a member named name, false if the member does not exist.
+
+
+
+
+ Removes the member name from the object obj.
+
+
+
+
+ Sets the member name on object obj to value.
+
+
+
+
+ Sets the member name on object obj to value. This overload can be used to avoid
+ boxing and casting of strongly typed members.
+
+
+
+
+ Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
+
+
+
+
+ Gets the member name from the object obj and converts it to the type T. Throws an exception if the
+ member does not exist, is write-only, or cannot be converted.
+
+
+
+
+ Gets the member name from the object obj. Returns true if the member is successfully retrieved and
+ stores the value in the value out param.
+
+
+
+
+ Returns true if the object has a member named name, false if the member does not exist.
+
+
+
+
+ Removes the member name from the object obj.
+
+
+
+
+ Sets the member name on object obj to value.
+
+
+
+
+ Sets the member name on object obj to value. This overload can be used to avoid
+ boxing and casting of strongly typed members.
+
+
+
+
+ Converts the object obj to the type T. The conversion will be explicit or implicit depending on
+ what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type type. The conversion will be explicit or implicit depending on
+ what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
+
+ The conversion will be explicit or implicit depending on what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type type. Returns true if the value can be converted, false if it cannot.
+
+ The conversion will be explicit or implicit depending on what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type T including explicit conversions which may lose information.
+
+
+
+
+ Converts the object obj to the type type including explicit conversions which may lose information.
+
+
+
+
+ Converts the object obj to the type T including explicit conversions which may lose information.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type type including explicit conversions which may lose information.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type T including implicit conversions.
+
+
+
+
+ Converts the object obj to the type type including implicit conversions.
+
+
+
+
+ Converts the object obj to the type T including implicit conversions.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type type including implicit conversions.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Performs a generic unary operation on the specified target and returns the result.
+
+
+
+
+ Performs a generic unary operation on the strongly typed target and returns the value as the specified type
+
+
+
+
+ Performs the generic binary operation on the specified targets and returns the result.
+
+
+
+
+ Peforms the generic binary operation on the specified strongly typed targets and returns
+ the strongly typed result.
+
+
+
+
+ Performs addition on the specified targets and returns the result. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Performs subtraction on the specified targets and returns the result. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Raises the first object to the power of the second object. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Multiplies the two objects. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Divides the first object by the second object. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Performs modulus of the 1st object by the second object. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Shifts the left object left by the right object. Throws an exception if the
+ operation cannot be performed.
+
+
+
+
+ Shifts the left object right by the right object. Throws an exception if the
+ operation cannot be performed.
+
+
+
+
+ Performs a bitwise-and of the two operands. Throws an exception if the operation
+ cannot be performed.
+
+
+
+
+ Performs a bitwise-or of the two operands. Throws an exception if the operation
+ cannot be performed.
+
+
+
+
+ Performs a exclusive-or of the two operands. Throws an exception if the operation
+ cannot be performed.
+
+
+
+
+ Compares the two objects and returns true if the left object is less than the right object.
+ Throws an exception if hte comparison cannot be performed.
+
+
+
+
+ Compares the two objects and returns true if the left object is greater than the right object.
+ Throws an exception if hte comparison cannot be performed.
+
+
+
+
+ Compares the two objects and returns true if the left object is less than or equal to the right object.
+ Throws an exception if hte comparison cannot be performed.
+
+
+
+
+ Compares the two objects and returns true if the left object is greater than or equal to the right object.
+ Throws an exception if hte comparison cannot be performed.
+
+
+
+
+ Compares the two objects and returns true if the left object is equal to the right object.
+ Throws an exception if the comparison cannot be performed.
+
+
+
+
+ Compares the two objects and returns true if the left object is not equal to the right object.
+ Throws an exception if hte comparison cannot be performed.
+
+
+
+
+ Returns a string which describes the object as it appears in source code
+
+
+
+
+ Returns a string representation of the object in a language specific object display format.
+
+
+
+
+ Returns a list of strings which contain the known members of the object.
+
+
+
+
+ Returns a string providing documentation for the specified object.
+
+
+
+
+ Returns a list of signatures applicable for calling the specified object in a form displayable to the user.
+
+
+
+
+ Calls the provided object with the given parameters and returns the result.
+
+ The prefered way of calling objects is to convert the object to a strongly typed delegate
+ using the ConvertTo methods and then invoking that delegate.
+
+
+
+
+ Performs a generic unary operation on the specified target and returns the result.
+
+
+
+
+ Performs a generic unary operation on the strongly typed target and returns the value as the specified type
+
+
+
+
+ Performs modulus of the 1st object by the second object. Throws an exception
+ if the operation cannot be performed.
+
+
+
+
+ Performs the generic binary operation on the specified targets and returns the result.
+
+
+
+
+ Peforms the generic binary operation on the specified strongly typed targets and returns
+ the strongly typed result.
+
+
+
+
+ Calls the specified remote object with the specified remote parameters.
+
+ Though delegates are preferable for calls they may not always be usable for remote objects.
+
+
+
+
+ Calls the specified remote object with the local parameters which will be serialized
+ to the remote app domain.
+
+
+
+
+ Performs the specified unary operator on the remote object.
+
+
+
+
+ Performs the specified binary operator on the remote object.
+
+
+
+
+ Performs modulus on the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Returns true if the remote object is callable.
+
+
+
+
+ Invokes the specified remote object with the specified remote parameters.
+
+ Though delegates are preferable for calls they may not always be usable for remote objects.
+
+
+
+
+ Invokes the specified remote object with the local parameters which will be serialized
+ to the remote app domain.
+
+
+
+
+ Sets the remote object as a member on the provided remote object.
+
+
+
+
+ Sets the member name on the remote object obj to value. This overload can be used to avoid
+ boxing and casting of strongly typed members.
+
+
+
+
+ Gets the member name on the remote object. Throws an exception if the member is not defined or
+ is write-only.
+
+
+
+
+ Gets the member name on the remote object. Throws an exception if the member is not defined or
+ is write-only.
+
+
+
+
+ Gets the member name on the remote object. Returns false if the member is not defined or
+ is write-only.
+
+
+
+
+ Tests to see if the member name is defined on the remote object.
+
+
+
+
+ Removes the member from the remote object
+
+
+
+
+ Converts the remote object into the specified type returning a handle to
+ the new remote object. The conversion will be explicit or implicit depending on
+ what the langauge prefers.
+
+
+
+
+ Converts the remote object into the specified type returning a handle to
+ the new remote object. The conversion will be explicit or implicit depending on
+ what the langauge prefers.
+
+
+
+
+ Converts the remote object into the specified type returning a handle to
+ the new remote object. Returns true if the value can be converted,
+ false if it cannot. The conversion will be explicit or implicit depending on
+ what the langauge prefers.
+
+
+
+
+ Converts the remote object into the specified type returning a handle to
+ the new remote object. Returns true if the value can be converted,
+ false if it cannot. The conversion will be explicit or implicit depending on
+ what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type T including explicit conversions which may lose information.
+
+
+
+
+ Converts the object obj to the type type including explicit conversions which may lose information.
+
+
+
+
+ Converts the object obj to the type T including explicit conversions which may lose information.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type type including explicit conversions which may lose information.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type T including implicit conversions.
+
+
+
+
+ Converts the object obj to the type type including implicit conversions.
+
+
+
+
+ Converts the object obj to the type T including implicit conversions.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type type including implicit conversions.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Unwraps the remote object and converts it into the specified type before
+ returning it.
+
+
+
+
+ Performs the specified unary operator on the remote object.
+
+
+
+
+ Performs the specified binary operator on the remote object.
+
+
+
+
+ Adds the two remote objects. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Subtracts the 1st remote object from the second. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Raises the 1st remote object to the power of the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Multiplies the two remote objects. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Divides the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Performs modulus on the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Shifts the 1st remote object left by the 2nd remote object. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Shifts the 1st remote object right by the 2nd remote object. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Performs bitwise-and on the two remote objects. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Performs bitwise-or on the two remote objects. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Performs exclusive-or on the two remote objects. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Compares the two remote objects and returns true if the 1st is less than the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Compares the two remote objects and returns true if the 1st is greater than the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Compares the two remote objects and returns true if the 1st is less than or equal to the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Compares the two remote objects and returns true if the 1st is greater than or equal to than the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Compares the two remote objects and returns true if the 1st is equal to the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Compares the two remote objects and returns true if the 1st is not equal to the 2nd. Throws an exception if the operation cannot be performed.
+
+
+
+
+ Returns a string representation of the object in a langauge specific object display format.
+
+
+
+
+ Returns a list of strings which contain the known members of the remote object.
+
+
+
+
+ Returns a string providing documentation for the specified remote object.
+
+
+
+
+ Returns a list of signatures applicable for calling the specified object in a form displayable to the user.
+
+
+
+
+ Helper to unwrap an object - in the future maybe we should validate the current app domain.
+
+
+
+
+ Helper to unwrap multiple objects
+
+
+
+
+ Provides documentation for a single overload of an invokable object.
+
+
+
+
+ The name of the invokable object.
+
+
+
+
+ The documentation for the overload or null if no documentation is available.
+
+
+
+
+ The parameters for the invokable object.
+
+
+
+
+ Information about the return value.
+
+
+
+
+ Gets a Func of CallSite, object * paramCnt, object delegate type
+ that's suitable for use in a non-strongly typed call site.
+
+
+
+
+ Unmapped span.
+
+
+
+
+ Exposes a IDictionary<SymbolId, object> as a IDictionary<object, object<
+
+
+
+
+ Move the tokenizer past the next token and return its category.
+
+ The token information associated with the token just scanned.
+
+
+
+ Move the tokenizer past the next token.
+
+ False if the end of stream has been reached, true otherwise.
+
+
+
+ Get all tokens over a block of the stream.
+
+
+
+ The scanner should return full tokens. If startLocation + length lands in the middle of a token, the full token
+ should be returned.
+
+
+ Tokens are read until at least given amount of characters is read or the stream ends.
+ A enumeration of tokens.
+
+
+
+ Scan from startLocation to at least startLocation + length.
+
+ The mininum number of characters to process while getting tokens.
+
+ This method is used to determine state at arbitrary startLocation.
+
+ False if the end of stream has been reached, true otherwise.
+
+
+
+ The current internal state of the scanner.
+
+
+
+
+ The current startLocation of the scanner.
+
+
+
+
+ Simple thread-safe SymbolDictionary used for storing collections of members.
+
+ Like all SymbolDictionaries this supports both indexing using SymbolId's (IAttributesCollection)
+ and via object keys (IDictionary<object, object>).
+
+
+
+
+ Base class for SymbolId dictionaries.
+
+ SymbolId dictionaries are fast dictionaries used for looking up members of classes,
+ function environments, function locals, and other places which are typically indexed by
+ string names.
+
+ SymbolId dictionaries support both keying by SymbolId (the common case) and object keys
+ (supporting late bound access to the dictionary as a normal Dictionary<object, object>
+ when exposed directly to user code). When indexed by objects null is a valid value for the
+ key.
+
+
+
+
+ Creates a new SymbolIdDictBase from the specified creating context which will be
+ used for comparisons.
+
+
+
+
+ Symbol dictionaries are usually indexed using literal strings, which is handled using the Symbols.
+ However, some languages allow non-string keys too. We handle this case by lazily creating an object-keyed dictionary,
+ and keeping it in the symbol-indexed dictionary. Such access is slower, which is acceptable.
+
+
+
+
+ Singleton for each language.
+
+
+
+
+ Must not be called under a lock as it can potentially call a user code.
+
+ The language context's implementation failed to instantiate.
+
+
+
+ Whether the application is in debug mode.
+ This means:
+
+ 1) Symbols are emitted for debuggable methods (methods associated with SourceUnit).
+ 2) Debuggable methods are emitted to non-collectable types (this is due to CLR limitations on dynamic method debugging).
+ 3) JIT optimization is disabled for all methods
+ 4) Languages may disable optimizations based on this value.
+
+
+
+
+ Ignore CLR visibility checks.
+
+
+
+
+ Indications extra information about a parameter such as if it's a parameter array.
+
+
+
+
+ Provides documentation against live objects for use in a REPL window.
+
+
+
+
+ Gets the available members defined on the provided object.
+
+
+
+
+ Gets the overloads available for the provided object if it is invokable.
+
+
+
+
+ Gets the available members on the provided remote object.
+
+
+
+
+ Gets the overloads available for the provided remote object if it is invokable.
+
+
+
+
+ Converts a generic ICollection of T into an array of T.
+
+ If the collection is already an array of T the original collection is returned.
+
+
Provides a common table of all SymbolId's in the system.
@@ -3649,24 +2307,1091 @@
then we need to create a new entry in both tables.
-
+
- Source code reader.
-
-
-
-
- Seeks the first character of a specified line in the text stream.
+ Reads specified range of lines (or less) from the source unit.
+ Line numbers starts with 1.
- Line number. The current position is assumed to be line #1.
-
- Returns true if the line is found, false otherwise.
-
-
+
- Encoding that is used by the reader to convert binary data read from an underlying binary stream.
- Null if the reader is reading from a textual source (not performing any byte to character transcoding).
+ Errors are reported to the specified sink.
+ Returns null if the parser cannot compile the code due to error(s).
+
+
+
+
+ Executes against a specified scope.
+
+
+
+
+ Executes against a specified scope and reports errors to the given error sink.
+
+
+
+
+ Executes in a new scope created by the language.
+
+
+
+
+ Executes in a new scope created by the language.
+
+
+
+
+ Executes in a new scope created by the language.
+
+
+
+
+ Identification of the source unit. Assigned by the host.
+ The format and semantics is host dependent (could be a path on file system or URL).
+ Empty string for anonymous source units.
+
+
+
+
+ LanguageContext of the language of the unit.
+
+
+
+
+ ScriptCode is an instance of compiled code that is bound to a specific LanguageContext
+ but not a specific ScriptScope. The code can be re-executed multiple times in different
+ scopes. Hosting API counterpart for this class is CompiledCode.
+
+
+
+
+ This attribute is used to mark a parameter that can accept any keyword parameters that
+ are not bound to normal arguments. The extra keyword parameters will be
+ passed in a dictionary which is created for the call.
+
+ Most languages which support params dictionaries will support the following types:
+ IDictionary<string, anything>
+ IDictionary<object, anything>
+ Dictionary<string, anything>
+ Dictionary<object, anything>
+ IDictionary
+ IAttributesCollection (deprecated)
+
+ For languages which don't have language level support the user will be required to
+ create and populate the dictionary by hand.
+
+ This attribute is the dictionary equivalent of the System.ParamArrayAttribute.
+
+
+ public static void KeywordArgFunction([ParamsDictionary]IDictionary<string, object> dict) {
+ foreach (var v in dict) {
+ Console.WriteLine("Key: {0} Value: {1}", v.Key, v.Value);
+ }
+ }
+
+ Called from Python:
+
+ KeywordArgFunction(a = 2, b = "abc")
+
+ will print:
+ Key: a Value = 2
+ Key: b Value = abc
+
+
+
+
+ Hosting counterpart for .
+
+
+
+
+ Compile the ScriptSource into CompileCode object that can be executed
+ repeatedly in its default scope or in other scopes without having to recompile the code.
+
+ Code cannot be compiled.
+
+
+
+ Errors are reported to the specified listener.
+ Returns null if the parser cannot compile the code due to errors.
+
+
+
+
+ Errors are reported to the specified listener.
+ Returns null if the parser cannot compile the code due to error(s).
+
+
+
+
+ Errors are reported to the specified listener.
+ Returns null if the parser cannot compile the code due to error(s).
+
+
+
+
+ Executes the code in the specified scope.
+ Returns an object that is the resulting value of running the code.
+
+ When the ScriptSource is a file or statement, the engine decides what is
+ an appropriate value to return. Some languages return the value produced
+ by the last expression or statement, but languages that are not expression
+ based may return null.
+
+ Code cannot be compiled.
+
+
+
+ Executes the source code. The execution is not bound to any particular scope.
+
+
+
+
+ Executes the code in a specified scope and converts the result to the specified type.
+ The conversion is language specific.
+
+
+
+
+ Executes the code in an empty scope and converts the result to the specified type.
+ The conversion is language specific.
+
+
+
+
+ Executes the code in the specified scope and return a result.
+ Returns an ObjectHandle wrapping the resulting value of running the code.
+
+
+
+
+ Executes the code in an empty scope.
+ Returns an ObjectHandle wrapping the resulting value of running the code.
+
+
+
+
+ Runs a specified code as if it was a program launched from OS command shell.
+ and returns a process exit code indicating the success or error condition
+ of executing the code.
+
+ Exact behavior depends on the language. Some languages have a dedicated "exit" exception that
+ carries the exit code, in which case the exception is cought and the exit code is returned.
+ The default behavior returns the result of program's execution converted to an integer
+ using a language specific conversion.
+
+ Code cannot be compiled.
+
+
+
+ Detects the encoding of the content.
+
+
+ An encoding that is used by the reader of the script source to transcode its content to Unicode text.
+ Null if the content is already textual and no transcoding is performed.
+
+
+ Note that the default encoding specified when the script source is created could be overridden by
+ an encoding that is found in the content preamble (Unicode BOM or a language specific encoding preamble).
+ In that case the preamble encoding is returned. Otherwise, the default encoding is returned.
+
+ An I/O error occurs.
+
+
+
+ Reads specified range of lines (or less) from the source unit.
+
+ 1-based number of the first line to fetch.
+ The number of lines to fetch.
+
+ Which character sequences are considered line separators is language specific.
+ If language doesn't specify otherwise "\r", "\n", "\r\n" are recognized line separators.
+
+ An I/O error occurs.
+
+
+
+ Reads a specified line.
+
+ 1-based line number.
+ Line content. Line separator is not included.
+ An I/O error occurs.
+
+ Which character sequences are considered line separators is language specific.
+ If language doesn't specify otherwise "\r", "\n", "\r\n" are recognized line separators.
+
+
+
+
+ Gets script source content.
+
+ Entire content.
+ An I/O error occurs.
+
+ The result includes language specific preambles (e.g. "#coding:UTF-8" encoding preamble recognized by Ruby),
+ but not the preamble defined by the content encoding (e.g. BOM).
+ The entire content of the source unit is encoded by single encoding (if it is read from binary stream).
+
+
+
+
+ Identification of the source unit. Assigned by the host.
+ The format and semantics is host dependent (could be a path on file system or URL).
+ null for anonymous script source.
+ Cannot be an empty string.
+
+
+
+
+ Reads an option whose value is expected to be a collection of non-null strings.
+ Reaturns a read-only copy of the option's value.
+
+
+
+
+ Dynamically choose between interpreting, simple compilation and compilation
+ that takes advantage of runtime history.
+
+
+
+
+ The number of iterations before the interpreter starts compiling.s
+
+
+
+
+ Display exception detail (callstack) when exception gets caught
+
+
+
+
+ Whether to gather performance statistics.
+
+
+
+
+ Initial file search paths provided by the host.
+
+
+
+
+ Console input stream (Console.OpenStandardInput) has a bug that manifests itself if reading small amounts of data.
+ This class wraps the standard input stream with a buffer that ensures that enough data are read from the underlying stream.
+
+
+
+
+ Source code is a syntactically correct.
+
+
+
+
+ Source code represents an empty statement/expression.
+
+
+
+
+ Source code is already invalid and no suffix can make it syntactically correct.
+
+
+
+
+ Last token is incomplete. Source code can still be completed correctly.
+
+
+
+
+ Last statement is incomplete. Source code can still be completed correctly.
+
+
+
+
+ Represents a host-provided variables for executable code. The variables are
+ typically backed by a host-provided dictionary. Languages can also associate per-language
+ information with the context by using scope extensions. This can be used for tracking
+ state which is used across multiple executions, for providing custom forms of
+ storage (for example object keyed access), or other language specific semantics.
+
+ Scope objects are thread-safe as long as their underlying storage is thread safe.
+
+ Script hosts can choose to use thread safe or thread unsafe modules but must be sure
+ to constrain the code they right to be single-threaded if using thread unsafe
+ storage.
+
+
+
+
+ Creates a new scope with a new empty thread-safe dictionary.
+
+
+
+
+ Creates a new scope with the provided dictionary.
+
+
+
+
+ Creates a new scope which is backed by an arbitrary object for it's storage.
+
+
+
+
+
+ Gets the ScopeExtension associated with the provided ContextId.
+
+
+
+
+ Sets the ScopeExtension to the provided value for the given ContextId.
+
+ The extension can only be set once. The returned value is either the new ScopeExtension
+ if no value was previously set or the previous value.
+
+
+
+
+ A token marking an end of stream.
+
+
+
+
+ A space, tab, or newline.
+
+
+
+
+ A block comment.
+
+
+
+
+ A single line comment.
+
+
+
+
+ A documentation comment.
+
+
+
+
+ A numeric literal.
+
+
+
+
+ A character literal.
+
+
+
+
+ A string literal.
+
+
+
+
+ A regular expression literal.
+
+
+
+
+ A keyword.
+
+
+
+
+ A directive (e.g. #line).
+
+
+
+
+ A punctuation character that has a specific meaning in a language.
+
+
+
+
+ A token that operates as a separator between two language elements.
+
+
+
+
+ An identifier (variable, $variable, @variable, @@variable, $variable$, function!, function?, [variable], i'variable', ...)
+
+
+
+
+ Braces, parenthesis, brackets.
+
+
+
+
+ Errors.
+
+
+
+
+ Provides an interned representation of a string which supports both case sensitive and case insensitive
+ lookups.
+
+ By default all lookups are case sensitive. Case insensitive lookups can be performed by first creating
+ a normal SymbolId for a given string and then accessing the CaseInsensitiveIdentifier property. Using
+ the case insensitive identifier during a lookup will cause the lookup to be case insensitive.
+
+
+
+
+ Override of ToString.
+ DO NOT USE THIS METHOD TO RETRIEVE STRING THAT THE SYMBOL REPRESENTS
+ Use SymbolTable.IdToString(SymbolId) instead.
+
+
+
+ SymbolId for null string
+
+
+ SymbolId to represent invalid value
+
+
+
+ Provides a factory to create streams over one source of binary content.
+
+ StreamContentProvider's are used when opening a file of an unknown encoding. The
+ StreamContentProvider will be wrapped in a TextContentProvider provided by the language
+ which can support a language specific way of interpreting the binary data into text.
+
+ For example some languages allow a marker at the beginning of the file which specifies
+ the encoding of the rest of the file.
+
+
+
+
+ Creates a new Stream which is backed by the content the StreamContentProvider was created for.
+
+ For example if the StreamContentProvider was backing a file then GetStream re-opens the file and returns
+ the new stream.
+
+ This method may be called multiple times. For example once to compile the code and again to get
+ the source code to display error messages.
+
+
+
+
+ Represents a language context. Typically there is at most 1 context
+ associated with each language, but some languages may use more than one context
+ to identify code that should be treated differently. Contexts are used during
+ member and operator lookup.
+
+
+
+
+ Registers a language within the system with the specified name.
+
+
+
+
+ Looks up the context ID for the specified context identifier
+
+
+
+
+ A ScriptScope is a unit of execution for code. It consists of a global Scope which
+ all code executes in. A ScriptScope can have an arbitrary initializer and arbitrary
+ reloader.
+
+ ScriptScope is not thread safe. Host should either lock when multiple threads could
+ access the same module or should make a copy for each thread.
+
+ Hosting API counterpart for .
+
+
+
+
+ Gets a value stored in the scope under the given name.
+
+ The specified name is not defined in the scope.
+ is a null reference.
+
+
+
+ Gets a value stored in the scope under the given name.
+ Converts the result to the specified type using the conversion that the language associated with the scope defines.
+ If no language is associated with the scope, the default CLR conversion is attempted.
+
+ The specified name is not defined in the scope.
+ is a null reference.
+
+
+
+ Tries to get a value stored in the scope under the given name.
+
+ is a null reference.
+
+
+
+ Tries to get a value stored in the scope under the given name.
+ Converts the result to the specified type using the conversion that the language associated with the scope defines.
+ If no language is associated with the scope, the default CLR conversion is attempted.
+
+ is a null reference.
+
+
+
+ Sets the name to the specified value.
+
+ is a null reference.
+
+
+
+ Gets a handle for a value stored in the scope under the given name.
+
+ The specified name is not defined in the scope.
+ is a null reference.
+
+
+
+ Tries to get a handle for a value stored in the scope under the given name.
+ Returns true if there is such name, false otherwise.
+
+ is a null reference.
+
+
+
+ Sets the name to the specified value.
+
+
+ The value held by the handle isn't from the scope's app-domain and isn't serializable or MarshalByRefObject.
+
+ or is a null reference.
+
+
+
+ Determines if this context or any outer scope contains the defined name.
+
+ is a null reference.
+
+
+
+ Removes the variable of the given name from this scope.
+
+ true if the value existed in the scope before it has been removed.
+ is a null reference.
+
+
+
+ Gets a list of variable names stored in the scope.
+
+
+
+
+ Gets an array of variable names and their values stored in the scope.
+
+
+
+
+ Gets an engine for the language associated with this scope.
+ Returns invariant engine if the scope is language agnostic.
+
+
+
+
+ Represents a language in Hosting API.
+ Hosting API counterpart for .
+
+
+
+
+ Returns a new ObjectOperations object. See the Operations property for why you might want to call this.
+
+
+
+
+ Returns a new ObjectOperations object that inherits any semantics particular to the provided ScriptScope.
+
+ See the Operations property for why you might want to call this.
+
+
+
+
+ Executes an expression. The execution is not bound to any particular scope.
+
+ The engine doesn't support code execution.
+ is a null reference.
+
+
+
+ Executes an expression within the specified scope.
+
+ The engine doesn't support code execution.
+ is a null reference.
+ is a null reference.
+
+
+
+ Executes an expression within a new scope and converts result to the given type.
+
+ The engine doesn't support code execution.
+ is a null reference.
+
+
+
+ Executes an expression within the specified scope and converts result to the given type.
+
+ The engine doesn't support code execution.
+ is a null reference.
+ is a null reference.
+
+
+
+ Executes content of the specified file in a new scope and returns that scope.
+
+ The engine doesn't support code execution.
+ is a null reference.
+
+
+
+ Executes content of the specified file against the given scope.
+
+ The .
+ The engine doesn't support code execution.
+ is a null reference.
+ is a null reference.
+
+
+
+ Executes the expression in the specified scope and return a result.
+ Returns an ObjectHandle wrapping the resulting value of running the code.
+
+
+
+
+ Executes the code in an empty scope.
+ Returns an ObjectHandle wrapping the resulting value of running the code.
+
+
+
+
+ Executes the expression in the specified scope and return a result.
+ Returns an ObjectHandle wrapping the resulting value of running the code.
+
+ If an exception is thrown the exception is caught and an ObjectHandle to
+ the exception is provided.
+
+
+
+
+ Executes the code in an empty scope.
+ Returns an ObjectHandle wrapping the resulting value of running the code.
+
+ If an exception is thrown the exception is caught and an ObjectHandle to
+ the exception is provided.
+
+
+
+
+ Creates a new ScriptScope whose storage is an arbitrary object.
+
+ Accesses to the ScriptScope will turn into get, set, and delete members against the object.
+
+
+
+
+ This method returns the ScriptScope in which a ScriptSource of given path was executed.
+
+ The ScriptSource.Path property is the key to finding the ScriptScope. Hosts need
+ to make sure they create a ScriptSource and set its Path property appropriately.
+
+ GetScope is primarily useful for tools that need to map files to their execution scopes. For example,
+ an editor and interpreter tool might run a file Foo that imports or requires a file Bar.
+
+ The editor's user might later open the file Bar and want to execute expressions in its context.
+ The tool would need to find Bar's ScriptScope for setting the appropriate context in its interpreter window.
+ This method helps with this scenario.
+
+
+
+
+ Return a ScriptSource object from string contents with the current engine as the language binding.
+
+ The default SourceCodeKind is AutoDetect.
+
+ The ScriptSource's Path property defaults to null.
+
+
+
+
+ Return a ScriptSource object from string contents with the current engine as the language binding.
+
+ The ScriptSource's Path property defaults to null.
+
+
+
+
+ Return a ScriptSource object from string contents with the current engine as the language binding.
+
+ The default SourceCodeKind is AutoDetect.
+
+
+
+
+ Return a ScriptSource object from string contents. These are helpers for creating ScriptSources' with the right language binding.
+
+
+
+
+ Return a ScriptSource object from file contents with the current engine as the language binding.
+
+ The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions
+ or map to this language engine with ScriptRuntime.GetEngineByFileExtension.
+
+ The default SourceCodeKind is File.
+
+ The ScriptSource's Path property will be the path argument.
+
+ The encoding defaults to System.Text.Encoding.Default.
+
+
+
+
+ Return a ScriptSource object from file contents with the current engine as the language binding.
+
+ The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions
+ or map to this language engine with ScriptRuntime.GetEngineByFileExtension.
+
+ The default SourceCodeKind is File.
+
+ The ScriptSource's Path property will be the path argument.
+
+
+
+
+ Return a ScriptSource object from file contents with the current engine as the language binding.
+
+ The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions
+ or map to this language engine with ScriptRuntime.GetEngineByFileExtension.
+
+ The ScriptSource's Path property will be the path argument.
+
+
+
+
+ This method returns a ScriptSource object from a System.CodeDom.CodeObject.
+ This is a factory method for creating a ScriptSources with this language binding.
+
+ The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
+
+ Languages may do more, but hosts should only expect CodeMemberMethod support,
+ and only sub nodes consisting of the following:
+ CodeSnippetStatement
+ CodeSnippetExpression
+ CodePrimitiveExpression
+ CodeMethodInvokeExpression
+ CodeExpressionStatement (for holding MethodInvoke)
+
+
+
+
+ This method returns a ScriptSource object from a System.CodeDom.CodeObject.
+ This is a factory method for creating a ScriptSources with this language binding.
+
+ The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
+
+ Languages may do more, but hosts should only expect CodeMemberMethod support,
+ and only sub nodes consisting of the following:
+ CodeSnippetStatement
+ CodeSnippetExpression
+ CodePrimitiveExpression
+ CodeMethodInvokeExpression
+ CodeExpressionStatement (for holding MethodInvoke)
+
+
+
+
+ This method returns a ScriptSource object from a System.CodeDom.CodeObject.
+ This is a factory method for creating a ScriptSources with this language binding.
+
+ The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
+
+ Languages may do more, but hosts should only expect CodeMemberMethod support,
+ and only sub nodes consisting of the following:
+ CodeSnippetStatement
+ CodeSnippetExpression
+ CodePrimitiveExpression
+ CodeMethodInvokeExpression
+ CodeExpressionStatement (for holding MethodInvoke)
+
+
+
+
+ This method returns a ScriptSource object from a System.CodeDom.CodeObject.
+ This is a factory method for creating a ScriptSources with this language binding.
+
+ The expected CodeDom support is extremely minimal for syntax-independent expression of semantics.
+
+ Languages may do more, but hosts should only expect CodeMemberMethod support,
+ and only sub nodes consisting of the following:
+ CodeSnippetStatement
+ CodeSnippetExpression
+ CodePrimitiveExpression
+ CodeMethodInvokeExpression
+ CodeExpressionStatement (for holding MethodInvoke)
+
+
+
+
+ These methods return ScriptSource objects from stream contents with the current engine as the language binding.
+
+ The default SourceCodeKind is File.
+
+ The encoding defaults to Encoding.Default.
+
+
+
+
+ These methods return ScriptSource objects from stream contents with the current engine as the language binding.
+
+ The default SourceCodeKind is File.
+
+
+
+
+ These methods return ScriptSource objects from stream contents with the current engine as the language binding.
+
+ The encoding defaults to Encoding.Default.
+
+
+
+
+ This method returns a ScriptSource with the content provider supplied with the current engine as the language binding.
+
+ This helper lets you own the content provider so that you can implement a stream over internal host data structures, such as an editor's text representation.
+
+
+
+
+ Fetches the value of a variable stored in the scope.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope), then the name lookup is
+ a literal lookup of the name in the scope's dictionary. Therefore, it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ This method removes the variable name and returns whether
+ the variable was bound in the scope when you called this method.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example. If there is a default engine, then the name lookup uses that language's semantics.
+
+ Some languages may refuse to remove some variables. If the scope has a default language that has bound
+ variables that cannot be removed, the language engine throws an exception.
+
+
+
+
+ Assigns a value to a variable in the scope, overwriting any previous value.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ Fetches the value of a variable stored in the scope and returns
+ a Boolean indicating success of the lookup.
+
+ When the method's result is false, then it assigns null to value.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ Fetches the value of a variable stored in the scope.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope), then the name lookup is
+ a literal lookup of the name in the scope's dictionary. Therefore, it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+ Throws an exception if the engine cannot perform the requested type conversion.
+
+
+
+
+ Fetches the value of a variable stored in the scope and returns
+ a Boolean indicating success of the lookup.
+
+ When the method's result is false, then it assigns default(T) to value.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+ Throws an exception if the engine cannot perform the requested type conversion,
+ then it return false and assigns value to default(T).
+
+
+
+
+ This method returns whether the variable is bound in this scope.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ Fetches the value of a variable stored in the scope and returns an the wrapped object as an ObjectHandle.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope), then the name lookup is
+ a literal lookup of the name in the scope's dictionary. Therefore, it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ Assigns a value to a variable in the scope, overwriting any previous value.
+
+ The ObjectHandle value is unwrapped before performing the assignment.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ Fetches the value of a variable stored in the scope and returns
+ a Boolean indicating success of the lookup.
+
+ When the method's result is false, then it assigns null to the value. Otherwise
+ an ObjectHandle wrapping the object is assigned to value.
+
+ If there is no engine associated with the scope (see ScriptRuntime.CreateScope),
+ then the name lookup is a literal lookup of the name in the scope's dictionary. Therefore,
+ it is case-sensitive for example.
+
+ If there is a default engine, then the name lookup uses that language's semantics.
+
+
+
+
+ This method returns a language-specific service.
+
+ It provides a point of extensibility for a language implementation
+ to offer more functionality than the standard engine members discussed here.
+
+ Commonly available services include:
+ TokenCategorizer
+ Provides standardized tokenization of source code
+ ExceptionOperations
+ Provides formatting of exception objects.
+ DocumentationProvidera
+ Provides documentation for live object.
+
+
+
+
+ Sets the search paths used by the engine for loading files when a script wants
+ to import or require another file of code.
+
+ The language doesn't allow to set search paths.
+
+
+
+ Gets the search paths used by the engine for loading files when a script wants
+ to import or require another file of code.
+
+
+
+
+ Returns a default ObjectOperations for the engine.
+
+ Because an ObjectOperations object caches rules for the types of
+ objects and operations it processes, using the default ObjectOperations for
+ many objects could degrade the caching benefits. Eventually the cache for
+ some operations could degrade to a point where ObjectOperations stops caching and
+ does a full search for an implementation of the requested operation for the given objects.
+
+ Another reason to create a new ObjectOperations instance is to have it bound
+ to the specific view of a ScriptScope. Languages may attach per-language
+ behavior to a ScriptScope which would alter how the operations are performed.
+
+ For simple hosting situations, this is sufficient behavior.
+
+
+
+
+
+
+ This property returns readon-only LanguageOptions this engine is using.
+
+
+ The values are determined during runtime initialization and read-only afterwards.
+ You can change the settings via a configuration file or explicitly using ScriptRuntimeSetup class.
+
+
+
+
+ This property returns the ScriptRuntime for the context in which this engine executes.
+
+
+
+
+ This property returns the engine's version as a string. The format is language-dependent.
+
+
+
+
+ This overload will be called when a SourceUnit is not available. This can happen if the code is being executed remotely,
+ since SourceUnit cannot be marshaled across AppDomains.
+
+
+
+
+ A collection of environment variables.
+
+
+
+
+ Event for when a host calls LoadAssembly. After hooking this
+ event languages will need to call GetLoadedAssemblyList to
+ get any assemblies which were loaded before the language was
+ loaded.
+
+
+
+
+ DLR requires any Hosting API provider to implement this class and provide its instance upon Runtime initialization.
+ DLR calls on it to perform basic host/system dependent operations.
+
+
+
+
+ Abstracts system operations that are used by DLR and could potentially be platform specific.
+
+
+
+
+ See also Microsoft.VisualStudio.Package.TokenTriggers.
@@ -4070,104 +3795,598 @@
messages and method selection.
-
-
- A ScriptScope is a unit of execution for code. It consists of a global Scope which
- all code executes in. A ScriptScope can have an arbitrary initializer and arbitrary
- reloader.
-
- ScriptScope is not thread safe. Host should either lock when multiple threads could
- access the same module or should make a copy for each thread.
-
- Hosting API counterpart for .
-
-
-
+
- Gets a value stored in the scope under the given name.
+ Represents a Dynamic Language Runtime in Hosting API.
+ Hosting API counterpart for .
- The specified name is not defined in the scope.
- is a null reference.
-
+
- Gets a value stored in the scope under the given name.
- Converts the result to the specified type using the conversion that the language associated with the scope defines.
- If no language is associated with the scope, the default CLR conversion is attempted.
+ Creates ScriptRuntime in the current app-domain and initialized according to the the specified settings.
+ Creates an instance of host class specified in the setup and associates it with the created runtime.
+ Both Runtime and ScriptHost are collocated in the current app-domain.
- The specified name is not defined in the scope.
- is a null reference.
-
+
- Tries to get a value stored in the scope under the given name.
+ Creates a new runtime with languages set up according to the current application configuration
+ (using System.Configuration).
- is a null reference.
-
+
- Tries to get a value stored in the scope under the given name.
- Converts the result to the specified type using the conversion that the language associated with the scope defines.
- If no language is associated with the scope, the default CLR conversion is attempted.
+ Creates ScriptRuntime in the current app-domain and initialized according to the the specified settings.
+ Creates an instance of host class specified in the setup and associates it with the created runtime.
+ Both Runtime and ScriptHost are collocated in the specified app-domain.
- is a null reference.
-
-
- Sets the name to the specified value.
-
- is a null reference.
+
+
+
-
+
- Gets a handle for a value stored in the scope under the given name.
+ Gets engine for the specified language.
- The specified name is not defined in the scope.
- is a null reference.
-
+
- Tries to get a handle for a value stored in the scope under the given name.
- Returns true if there is such name, false otherwise.
+ Looks up the engine for the specified language. It the engine hasn't been created in this Runtime, it is instantiated here.
+ The method doesn't lock nor send notifications to the host.
- is a null reference.
-
-
- Sets the name to the specified value.
-
-
- The value held by the handle isn't from the scope's app-domain and isn't serializable or MarshalByRefObject.
+
+
+ path is empty, contains one or more of the invalid characters defined in GetInvalidPathChars or doesn't have an extension.
- or is a null reference.
-
+
+ path is null
+ file extension does not map to language engine
+ language does not have any search paths
+ file does exist in language's search path
+
+
- Determines if this context or any outer scope contains the defined name.
+ This method walks the assembly's namespaces and name bindings to ScriptRuntime.Globals
+ to represent the types available in the assembly. Each top-level namespace name gets
+ bound in Globals to a dynamic object representing the namespace. Within each top-level
+ namespace object, nested namespace names are bound to dynamic objects representing each
+ tier of nested namespaces. When this method encounters the same namespace-qualified name,
+ it merges names together objects representing the namespaces.
- is a null reference.
+
-
+
- Removes the variable of the given name from this scope.
-
- true if the value existed in the scope before it has been removed.
- is a null reference.
-
-
-
- Gets a list of variable names stored in the scope.
+ This property returns the "global object" or name bindings of the ScriptRuntime as a ScriptScope.
+
+ You can set the globals scope, which you might do if you created a ScriptScope with an
+ IAttributesCollection so that your host could late bind names.
-
+
- Gets an array of variable names and their values stored in the scope.
+ Represents a location in source code.
-
+
- Gets an engine for the language associated with this scope.
- Returns invariant engine if the scope is language agnostic.
+ Creates a new source location.
+
+ The index in the source stream the location represents (0-based).
+ The line in the source stream the location represents (1-based).
+ The column in the source stream the location represents (1-based).
+
+
+
+ Compares two specified location values to see if they are equal.
+
+ One location to compare.
+ The other location to compare.
+ True if the locations are the same, False otherwise.
+
+
+
+ Compares two specified location values to see if they are not equal.
+
+ One location to compare.
+ The other location to compare.
+ True if the locations are not the same, False otherwise.
+
+
+
+ Compares two specified location values to see if one is before the other.
+
+ One location to compare.
+ The other location to compare.
+ True if the first location is before the other location, False otherwise.
+
+
+
+ Compares two specified location values to see if one is after the other.
+
+ One location to compare.
+ The other location to compare.
+ True if the first location is after the other location, False otherwise.
+
+
+
+ Compares two specified location values to see if one is before or the same as the other.
+
+ One location to compare.
+ The other location to compare.
+ True if the first location is before or the same as the other location, False otherwise.
+
+
+
+ Compares two specified location values to see if one is after or the same as the other.
+
+ One location to compare.
+ The other location to compare.
+ True if the first location is after or the same as the other location, False otherwise.
+
+
+
+ Compares two specified location values.
+
+ One location to compare.
+ The other location to compare.
+ 0 if the locations are equal, -1 if the left one is less than the right one, 1 otherwise.
+
+
+
+ A location that is valid but represents no location at all.
+
+
+
+
+ An invalid location.
+
+
+
+
+ A minimal valid location.
+
+
+
+
+ The index in the source stream the location represents (0-based).
+
+
+
+
+ The line in the source stream the location represents (1-based).
+
+
+
+
+ The column in the source stream the location represents (1-based).
+
+
+
+
+ Whether the location is a valid location.
+
+ True if the location is valid, False otherwise.
+
+
+
+ Provides a StreamContentProvider for a stream of content backed by a file on disk.
+
+
+
+
+ Stores information needed to setup a ScriptRuntime
+
+
+
+
+ Reads setup from .NET configuration system (.config files).
+ If there is no configuration available returns an empty setup.
+
+
+
+
+ Reads setup from a specified XML stream.
+
+
+
+
+ Reads setup from a specified XML file.
+
+
+
+
+ The list of language setup information for languages to load into
+ the runtime
+
+
+
+
+ Indicates that the script runtime is in debug mode.
+ This means:
+
+ 1) Symbols are emitted for debuggable methods (methods associated with SourceUnit).
+ 2) Debuggable methods are emitted to non-collectable types (this is due to CLR limitations on dynamic method debugging).
+ 3) JIT optimization is disabled for all methods
+ 4) Languages may disable optimizations based on this value.
+
+
+
+
+ Ignore CLR visibility checks
+
+
+
+
+ Can be any derived class of ScriptHost. When set, it allows the
+ host to override certain methods to control behavior of the runtime
+
+
+
+
+ Option names are case-sensitive.
+
+
+
+
+ Arguments passed to the host type when it is constructed
+
+
+
+
+ Provides hosting to DLR. Forwards DLR requests to the ScriptHost.
+
+
+
+
+ Hosting API counterpart for .
+
+
+
+
+ Executes code in a default scope.
+
+
+
+
+ Execute code within a given scope and returns the result.
+
+
+
+
+ Executes code in in a default scope and converts to a given type.
+
+
+
+
+ Execute code within a given scope and converts result to a given type.
+
+
+
+
+ Engine that compiled this code.
+
+
+
+
+ Default scope for this code.
+
+
+
+
+ Class that represents compiler options.
+ Note that this class is likely to change when hosting API becomes part of .Net
+
+
+
+
+ ObjectOperations provide a large catalogue of object operations such as member access, conversions,
+ indexing, and things like addition. There are several introspection and tool support services available
+ for more advanced hosts.
+
+ You get ObjectOperation instances from ScriptEngine, and they are bound to their engines for the semantics
+ of the operations. There is a default instance of ObjectOperations you can share across all uses of the
+ engine. However, very advanced hosts can create new instances.
+
+
+
+ the number of sites required before we'll try cleaning up the cache...
+
+
+ the minimum difference between the average that is required to remove
+
+
+ the maximum number we'll remove on a single cache cleanup
+
+
+ the number of sites we should clear after if we can't make progress cleaning up otherwise
+
+
+ a dictionary of SiteKey's which are used to cache frequently used operations, logically a set
+
+
+ the # of sites we had created at the last cleanup
+
+
+ the total number of sites we've ever created
+
+
+
+ Calls the provided object with the given parameters and returns the result.
+
+ The prefered way of calling objects is to convert the object to a strongly typed delegate
+ using the ConvertTo methods and then invoking that delegate.
+
+
+
+
+ Invokes a member on the provided object with the given parameters and returns the result.
+
+
+
+
+ Invokes a member on the provided object with the given parameters and returns the result.
+
+
+
+
+ Creates a new instance from the provided object using the given parameters, and returns the result.
+
+
+
+
+ Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
+
+
+
+
+ Gets the member name from the object obj and converts it to the type T. Throws an exception if the
+ member does not exist, is write-only, or cannot be converted.
+
+
+
+
+ Gets the member name from the object obj. Returns true if the member is successfully retrieved and
+ stores the value in the value out param.
+
+
+
+
+ Returns true if the object has a member named name, false if the member does not exist.
+
+
+
+
+ Removes the member name from the object obj.
+
+
+
+
+ Sets the member name on object obj to value.
+
+
+
+
+ Sets the member name on object obj to value. This overload can be used to avoid
+ boxing and casting of strongly typed members.
+
+
+
+
+ Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only.
+
+
+
+
+ Gets the member name from the object obj and converts it to the type T. The conversion will be explicit or implicit
+ depending on what the langauge prefers. Throws an exception if the member does not exist, is write-only, or cannot be converted.
+
+
+
+
+ Gets the member name from the object obj. Returns true if the member is successfully retrieved and
+ stores the value in the value out param.
+
+
+
+
+ Returns true if the object has a member named name, false if the member does not exist.
+
+
+
+
+ Removes the member name from the object obj. Returns true if the member was successfully removed
+ or false if the member does not exist.
+
+
+
+
+ Sets the member name on object obj to value.
+
+
+
+
+ Sets the member name on object obj to value. This overload can be used to avoid
+ boxing and casting of strongly typed members.
+
+
+
+
+ Converts the object obj to the type T. The conversion will be explicit or implicit
+ depending on what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type type. The conversion will be explicit or implicit
+ depending on what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
+
+ The conversion will be explicit or implicit depending on what the langauge prefers.
+
+
+
+
+ Converts the object obj to the type type. Returns true if the value can be converted, false if it cannot.
+
+ The conversion will be explicit or implicit depending on what the langauge prefers.
+
+
+
+
+ Convers the object obj to the type T including explicit conversions which may lose information.
+
+
+
+
+ Converts the object obj to the type type including explicit conversions which may lose information.
+
+
+
+
+ Converts the object obj to the type type including explicit conversions which may lose information.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Convers the object obj to the type T including implicit conversions.
+
+
+
+
+ Converts the object obj to the type type including implicit conversions.
+
+
+
+
+ Converts the object obj to the type type including implicit conversions.
+
+ Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot.
+
+
+
+
+ Performs a generic unary operation on the strongly typed target and returns the value as the specified type
+
+
+
+
+ Peforms the generic binary operation on the specified strongly typed targets and returns
+ the strongly typed result.
+
+
+
+
+ Returns a list of strings which contain the known members of the object.
+
+
+
+
+ Returns a string representation of the object in a language specific object display format.
+
+
+
+
+ Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
+
+
+ This will either get the site from the cache or create a new site and return it. The cache
+ may be cleaned if it's gotten too big since the last usage.
+
+
+
+
+ Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
+
+
+ This will either get the site from the cache or create a new site and return it. The cache
+ may be cleaned if it's gotten too big since the last usage.
+
+
+
+
+ Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
+
+
+ This will either get the site from the cache or create a new site and return it. The cache
+ may be cleaned if it's gotten too big since the last usage.
+
+
+
+
+ Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
+
+
+ This will either get the site from the cache or create a new site and return it. The cache
+ may be cleaned if it's gotten too big since the last usage.
+
+
+
+
+ Gets or creates a dynamic site w/ the specified type parameters for the provided binder.
+
+
+ This will either get the site from the cache or create a new site and return it. The cache
+ may be cleaned if it's gotten too big since the last usage.
+
+
+
+
+ Helper to create to get or create the dynamic site - called by the GetSite methods.
+
+
+
+
+ Removes items from the cache that have the lowest usage...
+
+
+
+
+ Helper class for tracking all of our unique dynamic sites and their
+ usage patterns. We hash on the combination of the binder and site type.
+
+ We also track the hit count and the key holds the site associated w/ the
+ key. Logically this is a set based upon the binder and site-type but we
+ store it in a dictionary.
+
+
+
+
+ Bridges ErrorSink and ErrorListener.
+ Errors reported by language compilers to ErrorSink are forwarded to the ErrorListener provided by the host.
+
+
+ This proxy is created in the scenario when the compiler is processing a single SourceUnit.
+ Therefore it could maintain one to one mapping from SourceUnit to ScriptSource.
+ In a case, which shouldn't happen, that the compiler reports an error in a different SourceUnit we just create
+ a new instance of the ScriptSource each time.
+
+ TODO: Consider compilation of multiple source units and creating a hashtable mapping SourceUnits to ScriptSources
+ within the context of compilation unit.
+
+
+
+
+ Provides language specific documentation for live objects.
diff --git a/aspclassiccompiler/bin/Release/VBSC.exe b/aspclassiccompiler/bin/Release/VBSC.exe
index 72b5d60..9b3aab4 100644
Binary files a/aspclassiccompiler/bin/Release/VBSC.exe and b/aspclassiccompiler/bin/Release/VBSC.exe differ
diff --git a/aspclassiccompiler/bin/Release/VBSC.pdb b/aspclassiccompiler/bin/Release/VBSC.pdb
index bb32183..50bc6c0 100644
Binary files a/aspclassiccompiler/bin/Release/VBSC.pdb and b/aspclassiccompiler/bin/Release/VBSC.pdb differ
diff --git a/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.dll b/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.dll
index ac1869d..5670451 100644
Binary files a/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.dll and b/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.dll differ
diff --git a/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.pdb b/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.pdb
index 923b70f..ce9a4c1 100644
Binary files a/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.pdb and b/aspclassiccompiler/bin/Release40/Dlrsoft.Asp.pdb differ
diff --git a/aspclassiccompiler/bin/Release40/Dlrsoft.VBParser.dll b/aspclassiccompiler/bin/Release40/Dlrsoft.VBParser.dll
index 8d60613..13ecab3 100644
Binary files a/aspclassiccompiler/bin/Release40/Dlrsoft.VBParser.dll and b/aspclassiccompiler/bin/Release40/Dlrsoft.VBParser.dll differ
diff --git a/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.dll b/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.dll
index eed5efb..56d5faa 100644
Binary files a/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.dll and b/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.dll differ
diff --git a/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.pdb b/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.pdb
index 5b20493..6374758 100644
Binary files a/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.pdb and b/aspclassiccompiler/bin/Release40/Dlrsoft.VBScript.pdb differ
diff --git a/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.dll b/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.dll
index a0deade..323a697 100644
Binary files a/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.dll and b/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.dll differ
diff --git a/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.pdb b/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.pdb
index 6546dca..4f2d6f4 100644
Binary files a/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.pdb and b/aspclassiccompiler/bin/Release40/Microsoft.Dynamic.pdb differ
diff --git a/aspclassiccompiler/bin/Release40/Microsoft.Scripting.dll b/aspclassiccompiler/bin/Release40/Microsoft.Scripting.dll
index 1c937bd..12114c2 100644
Binary files a/aspclassiccompiler/bin/Release40/Microsoft.Scripting.dll and b/aspclassiccompiler/bin/Release40/Microsoft.Scripting.dll differ
diff --git a/aspclassiccompiler/bin/Release40/Microsoft.Scripting.pdb b/aspclassiccompiler/bin/Release40/Microsoft.Scripting.pdb
index e9e71d6..2a67917 100644
Binary files a/aspclassiccompiler/bin/Release40/Microsoft.Scripting.pdb and b/aspclassiccompiler/bin/Release40/Microsoft.Scripting.pdb differ